Maison >interface Web >js tutoriel >Introduction détaillée aux appels de méthode en JavaScript

Introduction détaillée aux appels de méthode en JavaScript

PHPz
PHPzoriginal
2016-05-16 16:23:301159parcourir

Cet article présente principalement l'introduction détaillée de l'appel de méthode en JavaScript. En JavaScript, si une fonction appartient à un objet, l'acte d'accéder à la fonction via l'objet est appelé « appel de méthode ». Les amis dans le besoin peuvent s'y référer. .

En JavaScript, si une fonction appartient à un objet, l'acte d'accéder à la fonction via l'objet est appelé « appel de méthode ». Contrairement aux appels de fonction ordinaires, lors d'un appel de méthode, la référence this dans la fonction changera - cela fera référence à l'objet utilisé pour appeler la fonction (l'objet deviendra le contexte d'invocation de l'appel de méthode) :

var x = 99;
var sample = {
  x:1,
  act:function(a){
    this.x = a*a;//assign value to sample's x, not global object's x.
  }
}
sample.act(6);
console.log(sample.x);//36
console.log(x);//9

De la même manière que pour accéder aux propriétés des objets, en plus d'utiliser l'opérateur point, JavaScript peut également utiliser l'opérateur crochet pour effectuer des appels de méthode :

//other ways to invoke method
sample["act"](7);
console.log(sample.x);//4

Pour les fonctions en JavaScript, un comportement plus intéressant est que les fonctions (fermetures) peuvent être intégrées dans des fonctions. Lors d'un appel de méthode, s'il y a une fonction intégrée dans la fonction méthode, alors le code dans la fonction intégrée peut accéder à la valeur de la variable externe :

//nested function can access variable outside of it.
var y = 88;
var sample2 = {
  y:1,
  act2:function(a){
    this.y = inner();
    function inner(){
      return a*a;
    }
  }
}
sample2.act2(8);
console.log(sample2.y);//64
console.log(y);//88

Cependant, contrairement à l'intuition, la fonction intégrée La le code in ne peut pas en hériter de l'extérieur ; c'est-à-dire que dans la fonction embarquée, cela ne fait pas référence à l'objet qui appelle la méthode, mais à l'objet global :

//nested function does not inherit "this". The "this" in nested function is global object
var sample3 = {
  act3:function(){
    inner();
    function inner(){
      console.log(this);//window object
    }
  }
}
sample3.act3();

Si vous en avez vraiment besoin intégrer la fonction Pour accéder à l'objet appelant la méthode, vous pouvez enregistrer cette valeur dans une variable dans la fonction externe :

//pass "this" to nested function
var sample4 = {
  act4:function(){
    var self = this;
    inner();
    function inner(){
        console.log(self);//Object {act4=function()}
    }
  }
}
sample4.act4();

Ce qui précède est l'intégralité du contenu de ce chapitre. Pour plus de didacticiels connexes, veuillez visiter. Tutoriel vidéo JavaScript !

Déclaration:
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