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

Warum funktioniert „bind()' nicht mit Pfeilfunktionen?

DDD
Freigeben: 2024-12-09 03:10:17
Original
819 Leute haben es durchsucht

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);
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

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