In es6 ist dieses Objekt im Pfeilfunktionskörper das Objekt, auf das der Bereich zeigt, in dem die Funktion definiert ist. Der Punkt davon in der Pfeilfunktion ist der Punkt des Objekts im Kontext. Wenn kein Kontextobjekt vorhanden ist, kann dies auch durch Aufrufen, Anwenden, Binden und andere Methoden nicht geändert werden Pfeilfunktion.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, ECMAScript Version 6, Dell G3-Computer.
Ich glaube, dass die Pfeilfunktion an vielen Stellen in der täglichen Entwicklung verwendet wird, weil sie sehr prägnant und gut lesbar ist, aber ihr größter Vorteil besteht tatsächlich darin, dass sie das Problem dieses Zeigens anonymer Funktionen löst und dabei hilft, Rückruffunktionen zu kapseln.
Lassen Sie mich zunächst zusammenfassen:
Das Objekt this im Pfeilfunktionskörper ist das Objekt, auf das der Bereich zeigt, in dem die Funktion definiert ist, und nicht das Objekt, auf das der Bereich zeigt, in dem sie verwendet wird.
In der ES6-Pfeilfunktion wird this
(1) standardmäßig auf diesen Punkt des Objekts im Kontext gesetzt, wenn es definiert wird. Das heißt, der Punkt in der ES6-Pfeilfunktion ist der Punkt des Objekts im Kontext. Wenn kein Kontextobjekt vorhanden ist, zeigt dies gelegentlich auf das Fenster
(2) Sogar aufrufen, anwenden, binden und Andere Methoden können den Sinn dieser Pfeilfunktion nicht ändern Rufen Sie die Methode auf, zeigen Sie sie auf das B-Objekt und geben Sie schließlich B aus. Daraus lässt sich schließen, dass dies von sayHello nur dann mit dem Objekt zusammenhängt, wenn es verwendet wird.
var name = 'window'; // 其实是window.name = 'window' var A = { name: 'A', sayHello: function(){ console.log(this.name) } } A.sayHello();// 输出A var B = { name: 'B' } A.sayHello.call(B);//输出B A.sayHello.call();//不传参数指向全局window对象,输出window.name也就是window
Ich glaube, dass die meisten Schüler hier Fehler machen werden, wenn sie denken, dass sayHello an A gebunden ist, aber in Wirklichkeit ist es an window gebunden. Warum also?
Zu Beginn habe ich mich auf „das Objekt, auf das der Bereich dieser Funktion zeigt“ konzentriert. Der Bereich bezieht sich hier auf das Innere der Funktion, also sayHello, und ist eigentlich die äußerste js-Umgebung Da es keine anderen Funktionen gibt und das Objekt, auf das die äußerste js-Umgebung zeigt, das Fensterobjekt ist.
So ändern Sie es, um A für immer zu binden:
var name = 'window'; var A = { name: 'A', sayHello: () => { console.log(this.name) } } A.sayHello();// 还是以为输出A ? 错啦,其实输出的是window
OK, auf diese Weise zeigt es immer auf das A-Objekt. Analysieren wir es anhand „des Objekts, auf das der Bereich zeigt, in dem sich die Funktion befindet“:
Dies Der Bereich, in dem sich die Funktion befindet: Der Bereich, in dem sich die Pfeilfunktion s befindet, ist sayHello, da sayHello eine Funktion ist.
----------------finish-------------
Sie können das Argumentobjekt nicht verwenden, da es im Funktionskörper nicht vorhanden ist. Wenn Sie es verwenden möchten, können Sie stattdessen den Rest-Parameter verwenden.
】
Das obige ist der detaillierte Inhalt vonWorauf weist dies in der es6-Pfeilmethode hin?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!