Heim >Web-Frontend >js-Tutorial >Warum funktioniert „bind()' nicht mit Pfeilfunktionen?

Warum funktioniert „bind()' nicht mit Pfeilfunktionen?

DDD
DDDOriginal
2024-12-09 03:10:17804Durchsuche

Why Doesn't `bind()` Work with Arrow Functions?

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!

Stellungnahme:
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