Zusammenfassen1. Ähnlichkeiten
2. Unterschied
call()-Methode
/* Normalmodus */ lass obj = { Summe(a, b) { console.log(dies) gib a + b zurück } } // Führen Sie die Methoden apply und bind der Funktion sum aus. Das ausgegebene Ergebnis ist das gleiche wie unten. obj.sum.call() // Fenster drucken obj.sum.call(undefined, 1, 2) // Fenster drucken obj.sum.call(null, 1, 2) // Fenster drucken /* Strikter Modus */ „streng verwenden“ // Führe die Methoden apply und bind der Funktion sum aus und drucke dies wie folgt aus: obj.sum.call() // Drucke undefined obj.sum.call(undefined, 1, 2) // druckt undefined obj.sum.call(null, 1, 2) // gibt null aus Simulationsimplementierung1. Wichtige Punkte
2. Bei der Simulationsimplementierung der Methoden call(), apply() und bind() wird hier im JS-Normalmodus und im strikten Modus eine einheitliche Verarbeitung durchgeführt, wenn der erste Parameter nicht übergeben wird oder undefiniert ist oder null übergeben wird, d. h. dies innerhalb der Zielfunktion zeigt auf das Fensterobjekt. 3. Der Code lautet wie folgt Function.prototype.myCall = Funktion (Kontext, ...Argumente) { if (Kontext === undefiniert || Kontext === null) { Kontext = Fenster } // Die folgende Zeile ist der Kerncode context.fn = this const Ergebnis = Kontext.fn(...args) lösche context.fn Ergebnis zurückgeben } lass obj1 = { Grundzahl: 1, Summe(a, b) { console.log(dies) gib dies zurück.basicNum + a + b } } let obj2 = { Grundzahl: 9 } console.log(obj1.sum.call(obj2, 2, 3)) // 14 console.log(obj1.sum.myCall(obj2, 2, 3)) // 14 Methode apply()Durch den Aufruf der Methode apply() wird die Zielfunktion sofort ausgeführt und die Referenz darauf innerhalb der Funktion geändert. Dies zeigt auf den ersten Parameter der Methode. Der zweite Parameter ist ein Parameterarray oder ein Argumentobjekt. Jeder Parameter, der durch jedes Arrayelement oder Argumentobjekt dargestellt wird, wird einzeln als Parameter der Zielfunktion übergeben. Simulationsimplementierung1. Wichtige Punkte
2. Der Code lautet wie folgt Function.prototype.myApply = Funktion (Kontext, Argumente) { if (Kontext === undefiniert || Kontext === null) { Kontext = Fenster } // Die folgende Zeile ist der Kerncode context.fn = this const Ergebnis = Kontext.fn(...args) lösche context.fn Ergebnis zurückgeben } console.log(obj1.sum.apply(obj2, [2, 3])) // 14 console.log(obj1.sum.myApply(obj2, [2, 3])) // 14 Methode bind()
Simulationsimplementierung1. Wichtige Punkte
2. Der Code lautet wie folgt Function.prototype.myBind = Funktion (Kontext, ...initArgs) { if (Kontext === undefiniert || Kontext === null) { Kontext = Fenster } // Diesen Wert zwischenspeichern const _this = this Rückgabefunktion (...args) { // Die folgende Zeile ist der Kerncode context.fn = _this const Ergebnis = Kontext.fn(...initArgs, ...args) lösche context.fn Ergebnis zurückgeben } } console.log(obj1.sum.bind(obj2, 2)(3)) // 14 console.log(obj1.sum.myBind(obj2, 2)(3)) // 14 Verwandte Wissenspunkte
Dies ist das Ende dieses Artikels über die detaillierte Fallanalyse von JavaScript-Funktionsaufrufen, Apply- und Bind-Methoden. Weitere relevante Inhalte zu JavaScript-Funktionsaufrufen, Apply- und Bind-Methoden finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: So verwenden Sie das Realip-Modul im Nginx-Grundlagenlernen
>>: Der Unterschied zwischen Schlüssel und Index in MySQL
ElementUI implementiert das Tutorial zum Paginier...
Inhaltsverzeichnis 1. Funktionseinführung 2. Schl...
Inhaltsverzeichnis 1. Umweltvorbereitung 2. Docke...
1. Scroll Snap ist eine unverzichtbare Fähigkeit ...
Inhaltsverzeichnis Cache Klassifizierung des Cach...
Laden Sie die Windows-Version von Nginx von der o...
Zunächst müssen Sie bestimmen, welche Felder oder...
Sowohl die Optionen „Nur lesen“ als auch „Deaktivi...
HTML-Struktur <Text> <div Klasse="W...
1. Dateistruktur des Tools-Verzeichnisses [root@w...
GTID-basierte Replikation Einführung Die GTID-bas...
Aktivieren Sie Remote-Zugriffsrechte für MySQL My...
In einem Projekt müssen Sie häufig Umgebungsvaria...
Kürzlich habe ich festgestellt, dass selbst wenn d...
【Inhalt】: 1. Verwenden Sie den Verlaufsstil des H...