Binden von „this“ in Pfeilfunktionen
Pfeilfunktionen, die in ES6 eingeführt wurden, sind aufgrund ihrer prägnanten Syntax beliebt geworden. Eine Einschränkung der Pfeilfunktionen besteht jedoch darin, dass sie „dies“ nicht erneut binden können. Im Gegensatz zu regulären Funktionen erben Pfeilfunktionen ihre „This“-Bindung zum Zeitpunkt der Definition vom umgebenden Kontext.
Im bereitgestellten Beispiel ist die Pfeilfunktion:
var f = () => console.log(this);
innerhalb von definiert globalen Geltungsbereich. Daher bezieht sich „this“ auf das globale Fensterobjekt und nicht auf das „o“-Objekt, an das wir versuchen, die Funktion zu binden:
var fBound = f.bind(o); fBound(); // Logs the window object
Um dieses Problem zu beheben, verwenden Sie keine Pfeilfunktion. Definieren Sie stattdessen eine normale Funktion:
var f = function() { console.log(this); }.bind(o); f(); // Logs the 'o' object
In diesem Fall wird die „this“-Bindung korrekt auf das „o“-Objekt gesetzt, da eine normale Funktion verwendet wird, die eine Neuzuweisung der Bindung ermöglicht.
Das obige ist der detaillierte Inhalt vonWarum funktioniert „bind()' nicht mit Pfeilfunktionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!