Heim > Web-Frontend > js-Tutorial > Hauptteil

Ausführliche Erläuterung von Anwendungsbeispielen zweier nicht geerbter Methoden in JavaScript

伊谢尔伦
Freigeben: 2017-07-20 14:52:03
Original
1062 Leute haben es durchsucht

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);
Nach dem Login kopieren

Das laufende Ergebnis ist:

Hello diz song glad to meet you! 
Hello my Object glad to meet you!
Nach dem Login kopieren

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
Nach dem Login kopieren

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!
Nach dem Login kopieren

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); //运行结果见上面的注释!!!!
Nach dem Login kopieren

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);
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!