Maison  >  Article  >  interface Web  >  Analyser le mystère de cela en Javascript

Analyser le mystère de cela en Javascript

怪我咯
怪我咯original
2017-03-29 14:48:01941parcourir

Avant-propos : c'est un mot-clé relativement particulier de JavaScript La large gamme d'applications et la flexibilité de la méthode la rendent puissante, mais en même temps elle. est voué à l'échec. Difficile à utiliser . Quand j’ai commencé à l’apprendre, j’étais très confus, j’ai recherché beaucoup d’informations afin de bien le comprendre. Ensuite, j'ai organisé ce que j'ai appris et je l'ai exprimé d'une manière facile à comprendre. Cela peut être utilisé comme notes d'étude et comme référence pour les enfants dans le besoin^_^

Qu'est-ce que c'est ?

La signification de ce mot-clé est claire et spécifique, c'est-à-dire qu'il fait référence à l' objet actuel. Cela signifie que cela n’est vrai que dans certaines circonstances relatives.

ceci est divisé en trois situations : objet global, objet actuel ou n'importe quel objet ; juger dans quelle situation il se trouve dépend entièrement de la façon dont la fonction est appelée, l'appel de fonction principale en JavaScript. Il existe plusieurs manières :

Appeler en tant que fonction normale

Appeler en tant que méthode objet

Appeler en tant que constructeur Appeler

Utiliser appliquer Ou appeler

1. En tant qu'appel de fonction normal

------C'est notre méthode la plus couramment utilisée, cette méthode d'appel appartient à l'Appel global, cela fait ici référence à l'objet global

function test(){
 this.a = 5;
 alert(this.a);
 alert(this);
}
test(); // 5 [object Window]



Comme indiqué ci-dessus : pour une fonction définie globalement, le propriétaire de la fonction est la page actuelle, c'est-à-dire objet window, donc l'objet appelant de example() est Window, donc ceci représente ici Window

Une autre façon de l'écrire :

var a = 5;
function test(){
 var a = 10;
 alert(this.a);
}
test(); //5



Comme indiqué ci-dessus : une variable a est également déclarée dans la fonction test(), mais le résultat de l'appel à test() est 5 , indiquant que la fonction à ce moment-là L'interne this représente l'objet global, qui est Window

peut être écrit d'une autre manière :

var a = 5;
function test(){
 this.a = 10;
}
test();
alert(a); //10



comme indiqué ci-dessus : Appelez test() La fonction modifie la valeur de la variable globale a, ce qui signifie qu'elle représente l'objet global à ce moment-là.

2. Appel en tant que fonction objet

------Lorsqu'une fonction est appelée par un objet, cela pointe vers l'objet


var name="张三";
 var person={
  name:"李四",
  showName:function(){
   alert(this.name);
  }
 }
 person.showName(); //输出 李四
 var other=person.showName;
 other(); //输出 张三



Comme indiqué ci-dessus : le résultat de l'exécution de person.showName() est Li Si, indiquant que ceci dans showName pointe vers la personne à ce moment-là ; >Après avoir attribué person.showName à other, parce que other est une variable globale, elle peut être considérée comme un
attribut
de l'objet window. Ainsi, lorsque vous appelez other(), cela équivaut à appeler window.other(), donc cela pointe vers la fenêtre, et le résultat de sortie est Zhang San Donc, lorsqu'il est appelé en tant qu'objet fonction, this ; pointe vers l'objet de l'appel.


3. Appelez
en tant que constructeur ------Le constructeur doit générer un nouvel objet via cette fonction, et cela pointera vers ce nouvel objet



function animal(){
 this.name = "豆豆";
}
var dog = new animal();
alert(dog.name); // 输出 豆豆
Comme indiqué ci-dessus : générer un objet de type

type d'objet
via le nouveau mot-clé et mettre Il est attribué à chien . Si ce constructeur est exécuté, this dans le constructeur
portée de la fonction pointe vers cet objet, ici il pointe vers dog, donc this.name est égal à dog.name, donc le résultat de sortie Pour Doudou. 4. Utilisez apply ou call pour appeler

------apply() est une méthode de l'objet fonction. Elle applique une méthode d'un objet et en utilise une autre. L'objet remplace l'objet actuel.



var a = "张三";
function test(){
 alert(this.a);
}
var b = {};
b.a = "李四";
b.n = test;
b.n(); //李四
b.n.apply(); //张三
b.n.apply(b); //李四
Comme indiqué ci-dessus : b.n()----Parce que l'objet appelé est b, this pointe vers b, this. a == b.a , donc le résultat est Li Si


b.n.apply----Lorsque le paramètre de apply() est vide, il n'y a pas d'objet pour remplacer l'objet actuel et l'objet global est utilisé par défaut, donc cela pointe vers window , le résultat est Zhang San

 b.n.apply(b)----fait référence au remplacement du pointeur this actuel par b, donc cela pointe vers b, et le résultat est Li Si

(référence à cet article J'ai lu les informations sur Internet et certains livres. S'il y a des erreurs, merci de les signaler et elles seront corrigées à temps. O(∩_∩)O )


Résumé :
Cet article présente JavaScript. Les exemples de la signification de ce mot-clé dans diverses situations sont très simples, ce qui peut aider à approfondir la compréhension. Bien qu'il ne s'agisse que d'un petit concept en JavaScript, nous pouvons l'utiliser pour comprendre l'environnement d'exécution des fonctions en JavaScript. Maîtriser pleinement les connaissances pertinentes à ce sujet nous aidera à écrire facilement des programmes JavaScript
orientés objet. Enfin, merci d'avoir regardé.

-->

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!

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