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
Öffnen Sie das Verbindungstool. Ich verwende Moba...
Inhaltsverzeichnis Vorwort SQL-Anweisungsoptimier...
1. concat()-Funktion Funktion: Mehrere Zeichenfol...
Normalerweise verwenden wir die Tags <ul><...
In diesem Artikelbeispiel wird der spezifische Co...
Es gibt kein Problem mit der Dockerfile-Konfigura...
Wenn Sie ein Linux-Meister werden möchten, ist di...
Vorwort Während meines Praktikums in der Firma ha...
Inhaltsverzeichnis 1. Lösung 2. MySQL-Zeichensatz...
Die Methode zum Umbrechen des Inhalts (Titelattrib...
prune Um diesen Befehl verwenden zu können, müsse...
Karussell Die Grundidee ist: Im großen Container ...
Fremdschlüssel Abfrage, bei welchen Tabellen der ...
Inhaltsverzeichnis Anforderung: Abfrage laufender...
Die Prozesspakete mit dem SYN-Flag im RFC793-Doku...