Heim  >  Artikel  >  Web-Frontend  >  Verwenden der Currying-Funktion zum Implementieren der Bind-Methode in Javascript

Verwenden der Currying-Funktion zum Implementieren der Bind-Methode in Javascript

PHPz
PHPzOriginal
2016-05-16 15:02:561175Durchsuche

Der folgende Editor bringt Ihnen einen Artikel, in dem die Currying-Funktion zum Implementieren der Bind-Methode in Javascript verwendet wird. Der Herausgeber findet es ziemlich gut, deshalb möchte ich es jetzt mit Ihnen teilen und es allen als Referenz geben. Folgen wir dem Herausgeber und werfen wir einen Blick darauf.

• Ke Lihuas Funktionsidee: Eine js-Vorverarbeitungsidee, die das Prinzip der Funktionsausführung nutzt, um einen nicht zerstörbaren Bereich zu bilden. Alle Inhalte, die vorverarbeitet werden müssen, werden in diesem nicht zerstörbaren Bereich gespeichert . Und gibt eine kleine Funktion zurück. In der kleinen Funktion können wir relevante Operationen an den zuvor gespeicherten Werten ausführen.

• Die Funktion der Bindungsmethode: Verarbeiten Sie dies in der als Kontextkontext übergebenen Rückrufmethode

/**
* 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));
  }
}
/**
* 模仿在原型链上的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);
  }
}
Das Obige ist der gesamte Inhalt der Verwendung der Currying-Funktion zur Implementierung der Bind-Methode in JavaScript. Ich hoffe, es kann Ihnen eine Referenz geben.
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn