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
Inhaltsverzeichnis 1. Über JavaScript 2. JavaScri...
Inhaltsverzeichnis 1. Nginx implementiert das Las...
Heute möchte ein Kunde eine Anzeige schalten und d...
zabbix_agent-Bereitstellung: Empfehlung: zabbix_a...
Wir alle kennen den Befehl tr, mit dem Ersetzunge...
Inhaltsverzeichnis Vorwort 1. Linux ändert die Yu...
1. Heute Nachmittag musste ich aufgrund der Anfor...
Union ist eine Vereinigungsoperation für die Date...
1. Umgebung: CentOS7, Openssl1.1.1k. 2. Konzept: ...
Inhaltsverzeichnis 1. Ressourcendateien 2. Instal...
Vorwort Im Linux-Betriebssystem sind Gerätedateie...
Inhaltsverzeichnis Entwicklungsumgebung Game-Engi...
1. Übergeordnete Komponenten können Props verwend...
Gestern Abend habe ich mir eine Interviewfrage ang...
Implementierung des Zeitvergleichs in MySql unix_...