


Eine einfache vergleichende Analyse der Verwendung von apply, call und this in JavaScript_Javascript-Kenntnissen
1.Definition anwenden
Anwenden: Rufen Sie die Funktion auf, ersetzen Sie diesen Wert der Funktion durch das angegebene Objekt und ersetzen Sie die Parameter der Funktion durch das angegebene Array.
Syntax: apply([thisObj[,argArray]])
thisObj
Optional. Das als dieses Objekt zu verwendende Objekt.
argArray
Optional. Eine Reihe von Argumenten, die an die Funktion übergeben werden sollen.
2.Anrufdefinition
Aufruf: Rufen Sie eine Methode eines Objekts auf und ersetzen Sie das aktuelle Objekt durch ein anderes Objekt.
Syntax: call([thisObj[, arg1[, arg2[, [, argN]]]]])
thisObj
Optional. Das Objekt, das als aktuelles Objekt verwendet werden soll.
arg1, arg2, , argN
Optional. Die Parameterliste, die an die Methode übergeben wird.
3. Der Unterschied zwischen den beiden
Der zweite Parameter von call kann von einem beliebigen Typ sein, während der zweite Parameter von apply ein Array oder Argumente sein muss.
Es gibt auch Unterschiede in den Definitionen.
4. Beispielanalyse
(1) Offizielles Beispiel:
function callMe(arg1, arg2){ var s = ""; s += "this value: " + this; s += "<br />"; for (i in callMe.arguments) { s += "arguments: " + callMe.arguments[i]; s += "<br />"; } return s; } document.write("Original function: <br/>"); document.write(callMe(1, 2)); document.write("<br/>"); document.write("Function called with apply: <br/>"); document.write(callMe.apply(3, [ 4, 5 ])); document.write(callMe.call(3, 4, 5 )); // Output: // Original function: // this value: [object Window] // arguments: 1 // arguments: 2 // Function called with apply: // this value: 3 // arguments: 4 // arguments: 5
Die erste mit apply: Definition: Rufen Sie eine Funktion auf und ersetzen Sie diesen Wert der Funktion durch das angegebene Objekt
Rufen Sie die Funktion callMe auf und ersetzen Sie diese in der callMe-Funktion durch das angegebene Objekt 3. Zu diesem Zeitpunkt ändert sich dieses hier vom vorherigen [Objektfenster] zu 3.
Die erste verwendet call: Definition: Rufen Sie eine Methode eines Objekts auf und ersetzen Sie das aktuelle Objekt durch ein anderes Objekt.
Rufen Sie die Methode des Objekts callMe auf und ersetzen Sie das Objekt in callMe durch ein anderes Objekt 3.
Aus der Analyse dieser Ergebnisse ist ersichtlich, dass beide das Objekt im angegebenen Objekt oder den angegebenen Wert verwenden, um dies im Objekt zu ändern.
Man kann auch sagen, dass das Objekt (this) in einer Funktion das Objekt (this) in einer anderen auszuführenden Funktion „kapert“.
Tatsächlich wirft dies die Frage auf: Was genau ist das? Warum ist es so wichtig, immer wieder so viel Mühe auf sich zu nehmen, um die Richtung zu ändern?
(2) Beispiel:
function zqz(a,b){ return alert(a+b); } function zqz_1(a,b){ zqz.apply(zqz_1,[a,b]) } zqz_1(1,2) //->3
Analyse: Gemäß der Definition: Rufen Sie eine Funktion auf und ersetzen Sie den Wert dieser Funktion durch das angegebene Objekt,
Hier wird die Funktion zqz aufgerufen und dieser Wert der zqz-Funktion durch das angegebene Objekt zqz_1 ersetzt.
Bitte beachten Sie, dass der Funktionsname in js tatsächlich ein Objekt ist, da der Funktionsname eine Referenz auf das Funktionsobjekt ist!
function add(a, b) { alert(a + b); } function sub(a, b) { alert(a - b); } add.call(sub, 3, 1); // 4
Analyse: Laut Definition: Rufen Sie eine Methode eines Objekts auf und ersetzen Sie das aktuelle Objekt durch ein anderes Objekt.
Hier ist die Methode zum Aufrufen des Objekts „add“ und zum Ersetzen des aktuellen Objekts „sub“ durch das Objekt „add“;
Ein weiteres Beispiel:
function zqz(a,b){ this.name=a; this.age=b; alert(this.name+" "+this.age); } function zqz_1(a,b){ zqz.apply(this,[a,b]) //我们亦可以这么写 zqz.apply(this,arguments) } zqz_1("Nic",12) //Nic 12
Analyse: Gemäß der Definition: Rufen Sie eine Funktion auf und ersetzen Sie den Wert dieser Funktion durch das angegebene Objekt,
Hier wird die Funktion zqz aufgerufen, wobei das angegebene Objekt this verwendet wird, um das this der Funktion zqz zu ersetzen.
Ein weiteres Beispiel:
<input type="text" id="myText" value="input text"> function Obj(){ this.value="对象!"; } var value="global 变量"; function Fun1(){ alert(this.value); } Fun1(); //global 变量 Fun1.call(window); //global 变量 Fun1.call(document.getElementById('myText')); //input text Fun1.call(new Obj()); //对象! Fun1(); //global 变量
Analyse: Definition: Rufen Sie eine Methode eines Objekts auf, um das aktuelle Objekt durch ein anderes Objekt zu ersetzen.
Rufen Sie die Methode des Fun1-Objekts auf, um das aktuelle Objekt in Fun1 durch das Fensterobjekt zu ersetzen.
Rufen Sie die Methode des Fun1-Objekts auf und ersetzen Sie das aktuelle Objekt in Fun1 durch das Objekt in der Eingabe.
Rufen Sie die Methode des Fun1-Objekts auf und ersetzen Sie das Objekt im aktuellen Fun1 durch das Objekt im neuen Objekt.
Werfen wir einen Blick auf die Frage eines Internetnutzers:
Mit der Aufrufmethode kann eine Methode im Namen eines anderen Objekts aufgerufen werden. Die Aufrufmethode ändert den Objektkontext einer Funktion vom Anfangskontext in das durch thisObj angegebene neue Objekt. Wenn der Parameter „thisObj“ nicht angegeben wird, wird das globale Objekt als „thisObj“ verwendet.
Dann habe ich es mir zur Aufgabe gemacht, einen Fall zu schreiben, aber was ich geschrieben habe, war anders als ich es mir vorgestellt habe; der Code ist wie folgt
function parent() { alert(this.name); } function child() { var name = '张三'; }; parent.call(child);
Was er ausgibt, ist Kind. Warum nicht Zhang San?
function parent() { alert(this.name); } function child() { this.name = '张三'; }; var p1 = new child(); parent.call(p1);Dies kann Zhang San Warum ausgeben?
Mal sehen, was los ist
Die Verwendung von Call und Apply besteht darin, dass sie mithilfe von Variablen als Funktionsnamen aufgerufen werden können. Zum Beispiel die Callback-Funktion einer Funktion. Die spezifische Verwendung lautet: ausgeführte Funktion.call (a, b, c ...), wobei a das Objekt ist, das in der ausgeführten Funktion angegeben werden muss, das null sein kann, und andere Parameter als Parameter des verwendet werden ausgeführte Funktion. Die Verwendung von apply ist ähnlich, außer dass der zweite Parameter ein Array ist.
Beispiel:
function doPost(url,param,callback){ //这里处理post请求 var str = xhr.responseText; callback.apply(this,[str]);//相当于调用了callback(str);并把callback中的this设定为doPost对象 }

JavaScript ist das Herzstück moderner Websites, da es die Interaktivität und Dynamik von Webseiten verbessert. 1) Es ermöglicht die Änderung von Inhalten, ohne die Seite zu aktualisieren, 2) Webseiten durch DOMAPI zu manipulieren, 3) Komplexe interaktive Effekte wie Animation und Drag & Drop, 4) die Leistung und Best Practices optimieren, um die Benutzererfahrung zu verbessern.

C und JavaScript erreichen die Interoperabilität durch WebAssembly. 1) C -Code wird in das WebAssembly -Modul zusammengestellt und in die JavaScript -Umgebung eingeführt, um die Rechenleistung zu verbessern. 2) In der Spieleentwicklung kümmert sich C über Physik -Engines und Grafikwiedergabe, und JavaScript ist für die Spiellogik und die Benutzeroberfläche verantwortlich.

JavaScript wird in Websites, mobilen Anwendungen, Desktop-Anwendungen und serverseitigen Programmierungen häufig verwendet. 1) In der Website -Entwicklung betreibt JavaScript DOM zusammen mit HTML und CSS, um dynamische Effekte zu erzielen und Frameworks wie JQuery und React zu unterstützen. 2) Durch reaktnatives und ionisches JavaScript wird ein plattformübergreifendes mobile Anwendungen entwickelt. 3) Mit dem Elektronenframework können JavaScript Desktop -Anwendungen erstellen. 4) Node.js ermöglicht es JavaScript, auf der Serverseite auszuführen und unterstützt hohe gleichzeitige Anforderungen.

Python eignet sich besser für Datenwissenschaft und Automatisierung, während JavaScript besser für die Entwicklung von Front-End- und Vollstapel geeignet ist. 1. Python funktioniert in Datenwissenschaft und maschinellem Lernen gut und unter Verwendung von Bibliotheken wie Numpy und Pandas für die Datenverarbeitung und -modellierung. 2. Python ist prägnant und effizient in der Automatisierung und Skripten. 3. JavaScript ist in der Front-End-Entwicklung unverzichtbar und wird verwendet, um dynamische Webseiten und einseitige Anwendungen zu erstellen. 4. JavaScript spielt eine Rolle bei der Back-End-Entwicklung durch Node.js und unterstützt die Entwicklung der Vollstapel.

C und C spielen eine wichtige Rolle in der JavaScript -Engine, die hauptsächlich zur Implementierung von Dolmetschern und JIT -Compilern verwendet wird. 1) C wird verwendet, um JavaScript -Quellcode zu analysieren und einen abstrakten Syntaxbaum zu generieren. 2) C ist für die Generierung und Ausführung von Bytecode verantwortlich. 3) C implementiert den JIT-Compiler, optimiert und kompiliert Hot-Spot-Code zur Laufzeit und verbessert die Ausführungseffizienz von JavaScript erheblich.

Die Anwendung von JavaScript in der realen Welt umfasst Front-End- und Back-End-Entwicklung. 1) Zeigen Sie Front-End-Anwendungen an, indem Sie eine TODO-Listanwendung erstellen, die DOM-Operationen und Ereignisverarbeitung umfasst. 2) Erstellen Sie RESTFUFFUPI über Node.js und express, um Back-End-Anwendungen zu demonstrieren.

Zu den Hauptanwendungen von JavaScript in der Webentwicklung gehören die Interaktion der Clients, die Formüberprüfung und die asynchrone Kommunikation. 1) Dynamisches Inhaltsaktualisierung und Benutzerinteraktion durch DOM -Operationen; 2) Die Kundenüberprüfung erfolgt vor dem Einreichung von Daten, um die Benutzererfahrung zu verbessern. 3) Die Aktualisierung der Kommunikation mit dem Server wird durch AJAX -Technologie erreicht.

Es ist für Entwickler wichtig, zu verstehen, wie die JavaScript -Engine intern funktioniert, da sie effizientere Code schreibt und Leistungs Engpässe und Optimierungsstrategien verstehen kann. 1) Der Workflow der Engine umfasst drei Phasen: Parsen, Kompilieren und Ausführung; 2) Während des Ausführungsprozesses führt die Engine dynamische Optimierung durch, wie z. B. Inline -Cache und versteckte Klassen. 3) Zu Best Practices gehören die Vermeidung globaler Variablen, die Optimierung von Schleifen, die Verwendung von const und lass und die Vermeidung übermäßiger Verwendung von Schließungen.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

VSCode Windows 64-Bit-Download
Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

ZendStudio 13.5.1 Mac
Leistungsstarke integrierte PHP-Entwicklungsumgebung

MantisBT
Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

mPDF
mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),