Heim >Web-Frontend >js-Tutorial >Können Pfeilfunktionen als ES6-Objektmethoden verwendet werden?
In ES6 können Objektmethoden mithilfe der traditionellen Funktionssyntax oder der prägnanten Methodensyntax definiert werden. Können wir jedoch die neu eingeführten Pfeilfunktionen in diesem Zusammenhang nutzen?
Versuchsversuche und aufgetretene Fehler:
Versuche, Pfeilfunktionen als Objektmethoden zu verwenden, wie unten gezeigt , führen zu einem Fehler:
var chopper = { owner: 'John', getOwner: () => { return this.owner; } };
Begründung:
Pfeilfunktionen funktionieren in Objektmethoden nicht wie erwartet, da sie den lexikalischen Wert „this“ erfassen, der außerhalb des Kontexts des Objekts liegt. Dies führt dazu, dass sich dies auf das globale This oder das This der lexikalisch einschließenden Funktion bezieht, nicht auf die Objektinstanz.
Alternativen und Empfehlungen:
Für Objektmethoden traditionell Es sollte die Funktionssyntax oder die ES6-Methodensyntax verwendet werden:
// Traditional function syntax var chopper = { owner: 'Zed', getOwner: function() { return this.owner; } }; // ES6 method syntax var chopper = { owner: 'Zed', getOwner() { return this.owner; } };
Unbound Arrow Functions (Abgelehnter Vorschlag):
Es gab einen Vorschlag für ungebundene Pfeilfunktionen, der eine Syntax ähnlich den Pfeilfunktionen einführen würde, jedoch mit einer separaten this-Bindung. Dieser Vorschlag wurde jedoch abgelehnt, da er lediglich die Standardgröße reduzierte, ohne neue Funktionalität anzubieten.
Das obige ist der detaillierte Inhalt vonKönnen Pfeilfunktionen als ES6-Objektmethoden verwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!