Heim >Web-Frontend >js-Tutorial >Ausführliche Erläuterung der Anwendungs- und Aufrufverwendungsbeispiele von Javascript zum Ändern des internen Punkts des Funktionskörpers

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

伊谢尔伦
伊谢尔伦Original
2017-07-20 14:20:541469Durchsuche

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
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
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
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 5s

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

undefiniert ist:
window.id="window";
document.querySelector('#test').onclick = function(){
  console.log(this.id);//test
  var fun = function(){
    console.log(this.id);
  }
  fun();//window
}


window.id="window";
document.querySelector('#test').onclick = function(){
  console.log(this.id);//test
  var fun = function(){
    console.log(this.id);
  }
  fun.call(this);//test
}

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!

Stellungnahme:
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