1. Jede Funktion enthält zwei nicht geerbte Methoden: apply() und call().
2. Sie haben den gleichen Zweck, sie rufen alle Funktionen in einem bestimmten Bereich auf.
3. Die empfangenen Parameter sind unterschiedlich. apply() empfängt zwei Parameter, einen ist der Bereich, in dem die Funktion ausgeführt wird (dies), und der andere ist das Parameterarray.
Der erste Parameter der call()-Methode ist derselbe wie der apply()-Methode, die an die Funktion übergebenen Parameter müssen jedoch aufgelistet werden. Beispiel 1:
window.firstName = "diz"; window.lastName = "song"; var myObject = { firstName: "my", lastName: "Object" }; function HelloName() { console.log("Hello " + this.firstName + " " + this.lastName, " glad to meet you!"); } HelloName.call(window); //huo .call(this); HelloName.call(myObject);
Das laufende Ergebnis ist:
Hello diz song glad to meet you! Hello my Object glad to meet you!
Beispiel 2:
function sum(num1, num2) { return num1 + num2; } console.log(sum.call(window, 10, 10)); //20 console.log(sum.apply(window,[10,20])); //30
Analyse: In Beispiel 1, Wir haben festgestellt, dass der eigentliche Nutzen von apply() und call() darin besteht, den Umfang zu erweitern, in dem die Funktion ausgeführt wird. Wenn wir dazu die traditionelle Methode verwenden möchten, sehen Sie sich bitte den folgenden Code an:
window.firstName = "diz"; window.lastName = "song"; var myObject = { firstName: "my", lastName: "Object" }; function HelloName() { console.log("Hello " + this.firstName + " " + this.lastName, " glad to meet you!"); } HelloName(); //Hello diz song glad to meet you! myObject.HelloName = HelloName; myObject.HelloName(); //Hello my Object glad to meet you!
Siehe Im roten Code haben wir festgestellt, dass wir die HelloName-Eigenschaft von myObject dynamisch erstellen müssen, um den Gültigkeitsbereich der Funktion „HelloName()“ auf das Objekt „myObject“ festzulegen. Diese Eigenschaft dient als Zeiger auf „HelloName(“. )-Funktion. Wenn wir auf diese Weise myObject.HelloName () aufrufen, zeigt die Variable this innerhalb der Funktion auf myObject und andere interne öffentliche Eigenschaften des Objekts können aufgerufen werden.
Durch die Analyse von Beispiel 2 können wir die tatsächliche Anwendung der Funktionen call() und apply() erkennen. In tatsächlichen Projekten müssen sie entsprechend den tatsächlichen Bedingungen flexibel gehandhabt werden!
Eine kleine Frage: Schauen Sie sich diese Variable noch einmal an, wenn Sie die Funktion in der Funktion definieren
function temp1() { console.log(this); //Object {} function temp2() { console.log(this); //Window } temp2(); } var Obj = {}; temp1.call(Obj); //运行结果见上面的注释!!!!
Das Ausführungsergebnis ist das gleiche wie das Folgende:
function temp1() { console.log(this); temp2(); } function temp2() { console.log(this); } var Obj = {}; temp1.call(Obj);
Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung von Anwendungsbeispielen zweier nicht geerbter Methoden in JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!