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
Code kopieren Der Code lautet wie folgt: 1. Sina ...
In diesem Artikel wird der spezifische Code von J...
Inhaltsverzeichnis Die erste Methode: Wenn die My...
Inhaltsverzeichnis 1. Docker-Image 2. Erstellen S...
watch : auf Datenänderungen achten (Änderungserei...
Das MySQL auf einem Server im Computerraum lief e...
1. Die Bedeutung von Webstandards verstehen - War...
In diesem Artikelbeispiel wird der spezifische JS...
Erstellen einer Tabelle Tabelle erstellen Bestell...
Inhaltsverzeichnis Abhängigkeiten installieren Ko...
In diesem Artikel wird der spezifische JavaScript...
Absolute Positionierungsmethode: (1) Stellen Sie ...
Das Zählen der Größe jeder Tabelle in jeder Daten...
Inhaltsverzeichnis verwendenMemo useCallback verw...
Hier verwenden wir hauptsächlich Spring-Boot, das...