Heim > Web-Frontend > js-Tutorial > Hauptteil

Detaillierte Erläuterung der Funktionen von Call- und Apply-Schlüsselwörtern in js

高洛峰
Freigeben: 2016-12-06 11:05:45
Original
898 Leute haben es durchsucht

Die Rolle von Javascript-Aufrufen und Anwenden von Schlüsselwörtern

Anwenden akzeptiert zwei Parameter. Der erste Parameter gibt den Zeiger auf dieses Objekt im Funktionskörper an, und der zweite Parameter ist eine Sammlung mit Indizes.

Aufruf ist syntaktischer Zucker für „Anwenden“. Wenn die Anzahl der Parameter festgelegt ist, können Sie den zweiten Parameter übergeben, ohne den Satz zu subskribieren.

var func = function(a,b,c)
{
 alert(a + b + c);
}
func.apply(null,[1,2,3]);//弹出6
func.call(null,1,2,3);//弹出6
Nach dem Login kopieren

Wenn der erste in Apply und Call übergebene Parameter null ist, zeigt dieser im Funktionskörper auf window.

Wenn der erste Parameter, der in apply und call übergeben wird, null ist, zeigt dieser im Funktionskörper auf window.

Verwendung von „Anruf“ und „Anwenden“

1. Ändern Sie die Richtung davon

var obj1 = {
 name = '刘备'
}
  
var obj2 = {
 name = '曹操'
}
var getName = function(){
 alert(this.name);
}
  
window.name = '三国';
getName();//弹出"三国"
getName.call(obj1);//弹出"刘备"
getName.call(obj2);//弹出"曹操"
Nach dem Login kopieren

Also, wenn in einigen Situationen Nachdem sich der Punkt aus unerklärlichen Gründen geändert hat, können Sie call oder apply verwenden, um den Punkt zu korrigieren.

document.getElementById('div1').onclick = function(){
 alert(this.id);//div1
 var fun1 = function(){
  alert(this.id);//window.id 即undefined
 }
 fun1();//普通函数的方式调用,this指代window,相当于window.id 即 undefined
}
Nach dem Login kopieren

Da es im obigen Beispiel als normale Funktion aufgerufen wird, ist daraus „Fenster“ geworden. Sehen wir uns an, wie Sie mit call Korrekturen vornehmen können.

document.getElementById('div1').onclick = function(){
 alert(this.id);
 var fun1 = function(){
  alert(this.id);
 }
 fun1.call(this);//强制函数内的this为外层的this,
}
Nach dem Login kopieren

2. Aufrufen von Funktionen anderer Objekte

Beispiel 1:

var obj1 = {
 a:1,
 b:2,
 add:function()
 {
  return this.a + this.b;
 }
}
var obj2 = {
 a:1,
 b:2,
}
var result = obj1.add.call(obj2);//用obj1的函数来计算obj2的两个属性的和
alert(result);//输出3
Nach dem Login kopieren

Beispiel 2: Ausleihen von Konstruktoren, um vererbungsähnliche Effekte zu erzielen

var A = function(name)
{
 this.name = name;
};
var B = function(){
 A.apply(this,arguments)
}
B.prototype.getName = function(){
 return this.name;
}
var b = new B('刘备');
alert(b.getName());
Nach dem Login kopieren


Verwandte Etiketten:
js
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