Heim >Web-Frontend >js-Tutorial >Detaillierte Erklärung zur Verwendung der Funktionsbindungsmethode in Javascript

Detaillierte Erklärung zur Verwendung der Funktionsbindungsmethode in Javascript

伊谢尔伦
伊谢尔伦Original
2017-07-20 14:11:463257Durchsuche

Function.prototype.bind()

Die Bindungsmethode wird verwendet, um diesen Zeiger innerhalb der Funktion (den Bereich, in dem er ausgeführt wird) anzugeben und dann gibt eine neue Funktion zurück. Die Bind-Methode führt eine Funktion nicht sofort aus.


var keith = {
 a: 1,
 count: function() {
 console.log(this.a++);
 }
 };
 keith.count(); //1
 keith.count(); //2
 keith.count(); //3

Wenn this.a im obigen Code auf die a-Eigenschaft innerhalb des Keith-Objekts zeigt, wenn diese Methode einer anderen Variablen zugewiesen ist, it wird aufgerufen, wenn es aufgerufen wird. Etwas ist schief gelaufen.


 var keith = {
 a: 1,
 count: function() {
 console.log(this.a++);
 }
 };
 var f = keith.count;
 f(); //NaN

Wenn im obigen Code die Zählmethode der f-Variablen zugewiesen ist, dann zeigt dieses Objekt nicht mehr auf das Keith-Objekt, sondern auf das Fenster Objekt. Und window.a ist standardmäßig undefiniert. Nach der Inkrementierungsoperation ist undefiniert++ gleich NaN.

Um dieses Problem zu lösen, können Sie die Bindungsmethode verwenden, um dies im Keith-Objekt an das Keith-Objekt zu binden, oder es direkt aufrufen.


 var f = keith.count.bind(keith);
 f(); //1
 f(); //2
 f(); //3
 keith.count.bind(keith)() //1
 keith.count.bind(keith)() //2
 keith.count.bind(keith)() //3

Natürlich kann dies auch an andere Objekte gebunden werden.


 var obj = {
 a: 100
 };
 var f = keith.count.bind(obj);
 f(); //100
 f(); //101
 f(); //102

Ähnlich können wir auch Parameter an die Bindungsmethode übergeben. Wenn der erste Parameter null oder undefiniert ist oder dies, zeigt dieses Objekt innerhalb der Funktion die globale Umgebung; die zweite ist der beim Aufruf erforderliche Parameter, und die Form der Parameterübergabe ist dieselbe wie bei der Aufrufmethode.


 function keith(a, b) {
 return a + b;
 }
 console.log(keith.apply(null,[1,4])); //5
 console.log(keith.call(null,1,4)); //5
 console.log(keith.bind(null, 1, 4)); //keith()
 console.log(keith.bind(null, 1, 4)()); //5

Im obigen Code können Sie den Unterschied zwischen call, apply und bind sehen: Die Methoden call und apply werden unmittelbar nach dem Aufruf ausgeführt. Nach dem Bind-Aufruf kehrt es zur ursprünglichen Funktion zurück, die erneut aufgerufen werden muss , was ein bisschen wie ein Abschluss

ist

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung zur Verwendung der Funktionsbindungsmethode in Javascript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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