Maison > Article > interface Web > Explication détaillée des exemples d'utilisation d'applications et d'appels de javascript modifiant le point interne du corps de la fonction
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);//truelogName
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);//xiaowangfun
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#test
, voir le code suivant :
Utiliser appeler, postulerNous pouvons facilement résoudre ce problème
ECMAScript 5strict
de 🎜>, celui-ci a été stipulé dans ce cas non pas pour pointer vers l'objet global, mais pour êtrewindow.id="window"; document.querySelector('#test').onclick = function(){ console.log(this.id);//test var fun = function(){ console.log(this.id); } fun();//window }indéfini :
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!