Pfeilfunktionen vs. Methodendeklarationen in ES6
Beim Eintauchen in ES6 kann das folgende Problem auftreten:
var person = { name: "jason", shout: () => console.log("my name is ", this.name) }; person.shout(); // Prints "my name is "
Die Funktion soll auf die Namenseigenschaft im Personenobjekt zugreifen. Die Konsole gibt jedoch nur „mein Name ist“ aus.
Erklärung:
Dieses Verhalten ergibt sich aus der besonderen Natur der Pfeilfunktionen in ES6. Pfeilfunktionen binden im Gegensatz zu herkömmlichen Funktionsdeklarationen nicht das Schlüsselwort this. Stattdessen erben sie diese Bindung von ihrem umgebenden Bereich, der in diesem Fall der globale Bereich ist.
Lösung:
Um dieses Problem zu beheben, können Sie Folgendes tun Verwenden Sie das ES6-Methodendeklarationsmuster, das die gewünschte Bindung von Folgendes beibehält:
var person = { name: "jason", shout() { console.log("my name is ", this.name); } }; person.shout(); // Prints "my name is jason"
Das obige ist der detaillierte Inhalt vonPfeilfunktionen vs. Methodendeklarationen in ES6: Warum funktioniert „das' in Pfeilfunktionen nicht wie erwartet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!