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
Code kopieren Der Code lautet wie folgt: <html...
In diesem Artikel wird der Datenanzeigecode für d...
Gestern wollte ich a:visited verwenden, um die Fa...
Datenbankanwendungen sind ein unverzichtbarer Bes...
Das mobile Vue-Terminal bestimmt die Richtung, in...
Vorwort Nach der Installation von MySQL und Navic...
Inhaltsverzeichnis Vorwort 1. Installation 1. Dow...
Um das Benutzererlebnis und die Benutzerfreundlich...
Der Unterschied zwischen http und https ist Bei m...
1. Erzwingen Sie keinen Zeilenumbruch und beenden ...
Der erste Cutter in China github.com/chokcoco Hie...
Antd+React+Webpack ist häufig die Standardkombina...
Ich habe vor kurzem angefangen, MySQL zu lernen. ...
Inhaltsverzeichnis Vorwort Systemumgebung Aktuell...
Inhaltsverzeichnis 1. Globale Wache 1. Globale Fr...