Heim > Web-Frontend > js-Tutorial > Warum funktioniert „das' in ES6-Pfeilfunktionen nicht wie erwartet?

Warum funktioniert „das' in ES6-Pfeilfunktionen nicht wie erwartet?

Patricia Arquette
Freigeben: 2024-12-12 12:06:16
Original
268 Leute haben es durchsucht

Why Doesn't `this` Work as Expected in ES6 Arrow Functions?

Pfeilfunktionen und dies

Beim Einbinden von Eigenschaften in Funktionen mit ES6 tritt ein Problem auf, wenn versucht wird, auf dieses Objekt zuzugreifen.

var person = {
  name: "jason",

  shout: () => console.log("my name is ", this.name)
}

person.shout() // Should print out my name is jason
Nach dem Login kopieren

Beim Ausführen dieses Codes wird jedoch nicht der beabsichtigte Name angezeigt, sondern nur „mein Name ist“. Dieses Problem ist auf das einzigartige Verhalten von Pfeilfunktionen zurückzuführen.

Pfeilfunktionen fehlen dies, Argumente oder andere spezielle Namen. Wenn ein Objekt erstellt wird, befindet es sich im umschließenden Bereich und nicht innerhalb des Objekts. Durch die Untersuchung des Codes in diesen Variationen wird das Problem deutlicher:

var person = {
  name: "Jason"
};
person.shout = () => console.log("Hi, my name is", this);
Nach dem Login kopieren

und bei der Übersetzung in eine vage Annäherung an die Pfeilsyntax in ES5:

var person = {
  name: "Jason"
};
var shout = function() {
  console.log("Hi, my name is", this.name);
}.bind(this);
person.shout = shout;
Nach dem Login kopieren

In beiden Fällen , dies verweist für die Shout-Funktion auf den Bereich, in dem die Person definiert ist, und nicht auf den neuen Bereich, der mit dem Objekt verknüpft ist, wenn es hinzugefügt wird Person.

Während Pfeilfunktionen das beabsichtigte Verhalten nicht reproduzieren können, bietet ES6 eine alternative Lösung, indem es Methodendeklarationsmuster verwendet, um Platz zu sparen:

var person = {
  name: "Jason",
  // ES6 "method" declaration - leaving off the ":" and the "function"
  shout() {
    console.log("Hi, my name is", this.name);
  }
};
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum funktioniert „das' in ES6-Pfeilfunktionen nicht wie erwartet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage