Warum funktioniert „bind()' nicht mit Pfeilfunktionen „this'?
Dec 13, 2024 pm 05:07 PMRätsel der Bindung von „dies“ in Pfeilfunktionen: Ein aufgedecktes Dilemma
Trotz der verführerischen Einfachheit von Pfeilfunktionen ist ihr unergründliches Verhalten in Bezug auf „ Dies hat viele Entwickler verwirrt. Die Unfähigkeit, „dies“ an einen bestimmten Kontext innerhalb einer Pfeilfunktion zu binden, ist zu einer wiederkehrenden Quelle der Frustration geworden.
Um das Dilemma zu veranschaulichen, betrachten Sie diesen Code:
1 2 3 4 5 6 7 |
|
In diesem Beispiel , versuchen wir, den „this“-Kontext der Pfeilfunktion „f“ mit der Methode „bind()“ an das Objekt „o“ zu binden. Der Aufruf von „fBound()“ protokolliert jedoch aus unerklärlichen Gründen das globale „window“-Objekt anstelle des erwarteten „o“-Objekts.
Dieses verwirrende Verhalten liegt in der inhärenten Natur von Pfeilfunktionen begründet. Im Gegensatz zu regulären Funktionen, die ihren eigenen „This“-Kontext haben, erben Pfeilfunktionen ihre „This“-Bindung vom umgebenden lexikalischen Bereich. In diesem Fall wurde „f“ innerhalb des globalen Bereichs definiert, wodurch „this“ an das globale „window“-Objekt gebunden wurde.
In der ECMAScript 2015-Spezifikation heißt es eindeutig:
„Jeder Verweis auf arguments, super, this oder new.target innerhalb einer ArrowFunction müssen in eine Bindung in einer lexikalisch umschließenden Umgebung aufgelöst werden. Das erneute Binden von „this“ innerhalb einer Pfeilfunktion wird unmöglich. „this“ bleibt für immer in dem Kontext verankert, in dem die Pfeilfunktion definiert wurde.
Wenn die sinnvolle Verwendung von „this“ für Ihren Code von entscheidender Bedeutung ist, besteht die umsichtige Vorgehensweise darin, reguläre Funktionen anstelle von zu verwenden Pfeilfunktionen. Reguläre Funktionen bieten eine bessere Kontrolle über die „this“-Bindung und ermöglichen es Ihnen, „this“ mithilfe von „bind()“ oder anderen Methoden explizit an den gewünschten Kontext zu binden.
Das obige ist der detaillierte Inhalt vonWarum funktioniert „bind()' nicht mit Pfeilfunktionen „this'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Ersetzen Sie Stringzeichen in JavaScript

Benutzerdefinierte Google -Search -API -Setup -Tutorial

8 atemberaubende JQuery -Seiten -Layout -Plugins

Erstellen Sie Ihre eigenen AJAX -Webanwendungen

10 JavaScript & JQuery MVC -Tutorials
