Maison > interface Web > js tutoriel > le corps du texte

Explication détaillée des exemples d'utilisation d'applications et d'appels de javascript modifiant le point interne du corps de la fonction

伊谢尔伦
Libérer: 2017-07-20 14:20:54
original
1443 Les gens l'ont consulté

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


À ce moment, la méthode
var test = function(){
  console.log(this===window);
}
test.apply(null);//true
test.call(undefined);//true
Copier après la connexion
logName

dans foo sera référencée par bar , et
ce

pointe vers

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.

a une méthode
var foo = {
  name:"mingming",
  logName:function(){
    console.log(this.name);
  }
}
var bar={
  name:"xiaowang"
};
foo.logName.call(bar);//xiaowang
Copier après la connexion
fun

locale Lorsque fun est appelé comme une fonction normale, le
this

interne de

fun
pointe vers <. 🎜 >window

, mais on souhaite souvent qu'il pointe vers le nœud
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
Copier après la connexion
#test

, voir le code suivant :
Utiliser appeler, postulerNous pouvons facilement résoudre ce problème

Bien sûr, vous pouvez également le faire, mais dans

ECMAScript 5< Dans Le mode
strict

de 🎜>, celui-ci a été stipulé dans ce cas non pas pour pointer vers l'objet global, mais pour être
window.id="window";
document.querySelector(&#39;#test&#39;).onclick = function(){
  console.log(this.id);//test
  var fun = function(){
    console.log(this.id);
  }
  fun();//window
}
Copier après la connexion
indéfini :


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
}
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!