appeler et appliquer existent tous deux pour changer le contexte lorsqu'une fonction est en cours d'exécution, Changer. le pointeur de ceci à l'intérieur du corps de la fonction .
call et apply ont exactement la même fonction, mais la façon dont ils acceptent les paramètres est différente.
Définition de la méthode
apply
La méthode Function.apply(obj,args) peut recevoir deux paramètres :
obj : Cet objet remplacera cet objet dans la classe Function
args : Il s'agit d'un tableau ou de type tableau, et la méthode apply prend le éléments de cette collection Passé en paramètre à la fonction appelée.
call
Le premier paramètre de la méthode call est le même que le premier paramètre de la apply méthode , sauf que le deuxième paramètre est une liste de paramètres
En mode non strict, lorsque le premier paramètre est passé comme nul ou indéfini, celui-ci dans le corps de la fonction pointera vers l'objet hôte par défaut, dans le navigateur C'est la méthode de "piratage" des autres
var test = function(){ console.log(this===window); } test.apply(null);//true test.call(undefined);//true
dans foo sera référencée par bar , et
ce
bar
Mise en œuvre de l'héritage
Dans le développement réel, nous rencontrons souvent des scénarios dans lesquels ce pointeur est modifié par inadvertance.
var foo = { name:"mingming", logName:function(){ console.log(this.name); } } var bar={ name:"xiaowang" }; foo.logName.call(bar);//xiaowang
locale Lorsque fun est appelé comme une fonction normale, le
this
fun
pointe vers <. 🎜 >window
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
, voir le code suivant :
Utiliser appeler, postulerNous pouvons facilement résoudre ce problème
ECMAScript 5< Dans Le mode
strict
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 }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!