Maison > interface Web > js tutoriel > le corps du texte

Utilisation de la fonction currying pour implémenter la méthode bind en javascript

PHPz
Libérer: 2018-09-28 13:27:25
original
1192 Les gens l'ont consulté

L'éditeur suivant vous proposera un article utilisant la fonction currying pour implémenter la méthode bind en javascript. L'éditeur pense que c'est plutôt bien, alors j'aimerais le partager avec vous maintenant et le donner comme référence pour tout le monde. Suivons l'éditeur et jetons un coup d'œil.

• L'idée de fonction de Ke Lihua : une idée de prétraitement js ; utilisant le principe d'exécution de fonction pour former une portée non destructible, tout le contenu qui doit être prétraité est stocké dans cette portée non destructible. . Et renvoie une petite fonction. À partir de maintenant, nous exécuterons de petites fonctions. Dans la petite fonction, nous pouvons effectuer des opérations pertinentes sur les valeurs précédemment stockées

• La fonction curry joue principalement un rôle de prétraitement Function ;

• La fonction de la méthode bind : pré-traitez-la dans la méthode de rappel passée en contexte

/**
* bind方法实现原理1
* @param callback [Function] 回调函数
* @param context [Object] 上下文
* @returns {Function} 改变this指向的函数
*/
function bind(callback,context) {
  var outerArg = Array.prototype.slice.call(arguments,2);// 表示取当前作用域中传的参数中除了fn,context以外后面的参数;
  return function (){
    var innerArg = Array.prototype.slice.call(arguments,0);//表示取当前作用域中所有的arguments参数;
    callback.apply(context,outerArg.concat(innerArg));
  }
}
Copier après la connexion
/**
* 模仿在原型链上的bind实现原理(柯理化函数思想)
* @param context [Object] 上下文
* @returns {Function} 改变this指向的函数
*/
Function.prototype.mybind = function mybind (context) {
  var _this = this;
  var outArg = Array.prototype.slice.call(arguments,1);
  // 兼容情况下
  if('bind' in Function.prototype) {
    return this.bind.apply(this,[context].concat(outArg));
  }
  // 不兼容情况下
  return function () {
    var inArg = Array.prototype.slice.call(arguments,0);
    inArg.length === 0?inArg[inArg.length]=window.event:null;
    var arg = outArg.concat(inArg);
    _this.apply(context,arg);
  }
}
Copier après la connexion
Ce qui précède est tout le contenu de l'utilisation de la fonction currying pour implémenter la méthode bind en JavaScript. J'espère que cela pourra vous donner une référence.

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal