Heim >Web-Frontend >js-Tutorial >Ausführliche Erläuterung der Anwendungs- und Aufrufverwendungsbeispiele von Javascript zum Ändern des internen Punkts des Funktionskörpers
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 applyhaben genau die gleiche Funktion, aber die Art und Weise, wie sie Parameter akzeptieren, ist unterschiedlich.
Methodendefinitionapply
Die Methode Function.apply(obj,args) kann zwei Parameter empfangen:
Dieses Objekt ersetzt dieses Objekt in der Function-Klasse
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 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
var test = function(){ console.log(this===window); } test.apply(null);//true test.call(undefined);//truefoo
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
var foo = { name:"mingming", logName:function(){ console.log(this.name); } } var bar={ name:"xiaowang" }; foo.logName.call(bar);//xiaowangfun
als normale Funktion aufgerufen wird, zeigt funs internes
this
window
, aber wir möchten oft, dass es auf den Knoten
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 Catverweist, siehe folgenden Code:
Verwendung anrufen, bewerbenWir können dieses Problem ganz einfach lösenNatürlich können Sie das auch tun, aber in
strikter
-Modus, in diesem Fall wurde festgelegt, dass er nicht auf das globale Objekt zeigt, sondern
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!