Heim > Web-Frontend > js-Tutorial > Hauptteil

Detaillierte Erklärung zur Verwendung der Funktionsbindungsmethode in Javascript

伊谢尔伦
Freigeben: 2017-07-20 14:11:46
Original
3241 Leute haben es durchsucht

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

Ä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
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage