Die Pfeilfunktion ist eine neue Funktion in ES6. Sie hat kein eigenes this. Ihr this-Punkt wird von der äußeren Codebasis übernommen. Bei der Verwendung von Pfeilfunktionen sind einige Dinge zu beachten:
PS: In der tatsächlichen Entwicklungsumgebung kann React mithilfe von Pfeilfunktionen ein klassisches Problem lösen, auf das ich hier nicht näher eingehen werde. Sehen wir uns anhand eines Beispiels die Pfeilfunktionen in Aktion an: const obj = { fun1: Funktion () { konsole.log(dies); zurückgeben () => { konsole.log(dies); } }, fun2: Funktion () { Rückgabefunktion () { konsole.log(dies); zurückgeben () => { konsole.log(dies); } } }, fun3: () => { konsole.log(dies); } } lass f1 = obj.fun1(); // obj f1() // Objekt lass f2 = obj.fun2(); let f2_2 = f2(); // Fenster f2_2() // Fenster obj.fun3(); // Fenster Analyse jeder Ausgabezeile: Dies ist offensichtlich eine implizite Bindung, und fun1s this zeigt auf obj Die von der vorherigen Zeile zurückgegebene Pfeilfunktion wird hier ausgeführt. Wir analysieren, dass this in der vorherigen Codebasis auf obj zeigt, sodass es direkt geerbt wird und die Pfeilfunktion this auf Wenn fun2 auf der ersten Ebene ausgeführt wird, wird kein Code gedruckt. Stattdessen wird eine Funktion zurückgegeben und f2 zugewiesen. Hier tritt ein Bindungsverlust auf, und dies zeigt auf das Fenster statt auf das ursprüngliche Objekt (Zuweisung erfolgt). f2 () wird ausgeführt und das Rebound-Fenster wird ausgedruckt. Anschließend wird die Pfeilfunktion zurückgegeben und f2_2f zugewiesen. Ausführen und Fenster ausdrucken. Zeigt das this im äußeren Code nicht gerade auf window? Hier erbt es also window als this Die direkt im Literal definierte Pfeilfunktion kann das „this“ des Objekts nicht erben, sondern schaut eine Ebene weiter nach außen und findet das Fenster, da das Literalobjekt keinen eigenen Gültigkeitsbereich bilden kann, der Konstruktor jedoch schon. Wie manipulieren wir also den this-Zeiger der Pfeilfunktion? Die Antwort besteht darin, den this-Zeiger der äußeren Codebasis zu ändern und die Richtung davon zu ändern, bevor die Pfeilfunktion definiert wird. Basierend auf dem obigen Code: let fun4 = f2.bind(obj)() // obj fun4() // Objekt Wir haben festgestellt, dass der this-Zeiger der Methode der zweiten Ebene geändert wurde und die Pfeilfunktion ebenfalls übernommen wurde. fun2: Funktion () { return function () { // Das ändern wir hier konsole.log(dies); return () => { // Wenn es hier definiert ist, wird es vererbt console.log(this); } } }, ZusammenfassenDieser Artikel endet hier. Ich hoffe, er kann Ihnen helfen. Ich hoffe auch, dass Sie mehr Inhalten auf 123WORDPRESS.COM mehr Aufmerksamkeit schenken können! Das könnte Sie auch interessieren:
|
<<: So verwenden Sie Navicat zum Bedienen von MySQL
Manchmal benötigen unsere Seiten Eingabeaufforder...
Wir alle wissen, dass Apache in der Konfiguration...
Inhaltsverzeichnis Vorwort Warum Unit-Tests einfü...
Inhaltsverzeichnis Einführung in Docker Installat...
binlog ist eine binäre Protokolldatei, die alle D...
Vorwort Dieser Artikel stellt hauptsächlich die r...
Inhaltsverzeichnis 1. Reduzieren Sie die Anzahl d...
Inhaltsverzeichnis 1. Selbstaufzählbare Eigenscha...
Inhaltsverzeichnis 1. Wo man JavaScript schreibt ...
In diesem Artikelbeispiel wird der spezifische Co...
1. Datensicherung 1. Verwenden Sie den Befehl mys...
Umgebungseinführung Betriebssystem: Centos 7.4 Za...
Installation, Konfiguration, Start, Anmeldung und...
Installieren der erforderlichen Dateien Yum insta...
Inhaltsverzeichnis 1. Docker-Datei 2. POM-Konfigu...