Heim > Web-Frontend > Front-End-Fragen und Antworten > Worauf weist dies in der es6-Pfeilmethode hin?

Worauf weist dies in der es6-Pfeilmethode hin?

青灯夜游
Freigeben: 2022-11-21 17:55:45
Original
2202 Leute haben es durchsucht

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.

Worauf weist dies in der es6-Pfeilmethode hin?

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.

  • Ändern Sie es:
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
Nach dem Login kopieren

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

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.

    Das Objekt, auf das der Gültigkeitsbereich zeigt: A. Das Objekt, auf das sayHello zeigt, ist A.
  • In der Pfeilfunktion s zeigt dies also auf A~~
  • ----------------finish-------------

  • Abschließend sind bei der Verwendung von Pfeilfunktionen noch einige weitere Punkte zu beachten. Sie können nicht als Konstruktor verwendet werden, d. h. der neue Befehl kann nicht verwendet werden, da sonst ein Fehler ausgegeben wird.

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.

    Der Yield-Befehl kann nicht verwendet werden, daher können Pfeilfunktionen nicht als Generatorfunktionen verwendet werden.
  • 【Empfohlenes Lernen:
  • Javascript-Video-Tutorial

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!

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