Heim > Web-Frontend > js-Tutorial > Hauptteil

Ausführliche Erläuterung der Anwendungs- und Aufrufverwendungsbeispiele von Javascript zum Ändern des internen Punkts des Funktionskörpers

伊谢尔伦
Freigeben: 2017-07-20 14:20:54
Original
1443 Leute haben es durchsucht

call und apply sind beide vorhanden, um den Kontext zu ändern, wenn eine Funktion ausgeführt wird der Zeiger davon innerhalb des Funktionskörpers .

call und apply

haben genau die gleiche Funktion, aber die Art und Weise, wie sie Parameter akzeptieren, ist unterschiedlich.

Methodendefinition

apply
Die Methode Function.apply(obj,args) kann zwei Parameter empfangen:

obj:

Dieses Objekt ersetzt dieses Objekt in der Function-Klasse

args:

Dies ist ein Array oder arrayähnlich, und die apply-Methode übernimmt das Elemente in dieser Sammlung werden als Parameter an die aufgerufene Funktion übergeben.

call


Der erste Parameter der Call-Methode

ist derselbe wie der erste Parameter der Apply-Methode , außer Der zweite Parameter ist eine Parameterliste
Wenn im nicht strengen Modus der erste Parameter als Null oder undefiniert übergeben wird, verweist dieser im Funktionskörper auf das Standard-Hostobjekt. im Browser Es ist die Methode zum „Entführen“ anderer

Zu diesem Zeitpunkt wird die
logName

-Methode in
var test = function(){
  console.log(this===window);
}
test.apply(null);//true
test.call(undefined);//true
Nach dem Login kopieren
foo

durch bar referenziert , und dies zeigt auf
bar


Implementierung der Vererbung

In der tatsächlichen Entwicklung stoßen wir häufig auf Szenarien, in denen dieser Zeiger versehentlich geändert wird.

hat eine lokale
fun

-Methode. Wenn
var foo = {
  name:"mingming",
  logName:function(){
    console.log(this.name);
  }
}
var bar={
  name:"xiaowang"
};
foo.logName.call(bar);//xiaowang
Nach dem Login kopieren
fun

als normale Funktion aufgerufen wird, zeigt funs internes
this

auf

window
, aber wir möchten oft, dass es auf den Knoten

#test
function Animal(name){   
  this.name = name;   
  this.showName = function(){   
    console.log(this.name);   
  }   
}   

function Cat(name){  
  Animal.call(this, name);  
}   

var cat = new Cat("Black Cat");   
cat.showName(); //Black Cat
Nach dem Login kopieren
verweist, siehe folgenden Code:


Verwendung anrufen, bewerbenWir können dieses Problem ganz einfach lösenNatürlich können Sie das auch tun, aber in

ECMAScript 5< In 🎜>s

strikter
-Modus, in diesem Fall wurde festgelegt, dass er nicht auf das globale Objekt zeigt, sondern

undefiniert ist:
window.id="window";
document.querySelector(&#39;#test&#39;).onclick = function(){
  console.log(this.id);//test
  var fun = function(){
    console.log(this.id);
  }
  fun();//window
}
Nach dem Login kopieren


window.id="window";
document.querySelector(&#39;#test&#39;).onclick = function(){
  console.log(this.id);//test
  var fun = function(){
    console.log(this.id);
  }
  fun.call(this);//test
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der Anwendungs- und Aufrufverwendungsbeispiele von Javascript zum Ändern des internen Punkts des Funktionskörpers. 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!