Maison  >  Article  >  interface Web  >  Explication détaillée de son utilisation dans les connaissances Javascript_Basic

Explication détaillée de son utilisation dans les connaissances Javascript_Basic

WBOY
WBOYoriginal
2016-05-16 16:35:451273parcourir

Je l'ai utilisé lors d'une interview il y a quelques jours. L'intervieweur a dit que ma compréhension était un peu fausse. Je suis revenu et j'ai lu des livres et des blogs, j'ai fait des tests et j'ai découvert que ma compréhension était effectivement fausse

1. Variables globales

devrait être le plus couramment utilisé. Ceci est appelé dans une fonction, qui est en fait une variable globale

.
var value="0"; function mei(){ 
 var value="1"; 
 console.log(this.value); //0  console.log(value);   //1 } 
mei();

La sortie est 0 car cela pointe vers le global

2.Constructeur

C'est une utilisation avec laquelle je suis plus familier. Utilisez ceci dans le constructeur. Après avoir créé un nouvel objet, cela pointera vers le nouvel objet

var value="window"; function mei(){ 
 this.value=1; 
 this.show=function(){ 
  console.log(this.value) 
 } 
} var m=new mei(); 
console.log(m.value);  //1 m.show();        //1

Vous pouvez voir que la sortie est 1 au lieu de window. On peut voir qu'en raison du constructeur, cela pointe déjà ici vers un nouvel objet au lieu d'une variable globale

3.appelez et postulez

Empruntez directement les exemples de mon appel et postulez sur le blog

 var p="456"; 
 function f1(){ 
  this.p="123"; 
 } 
 function f2() { 
  console.log(this.p); 
 } 
 f2();       //456  f2.call(f1());  //123  f2.apply(f1());  //123

La première ligne génère 456, ce qui est facile à comprendre. Cela indique la situation globale. Le 123 suivant est dû au fait qu'après avoir utilisé call ou apply, ceci dans f2 pointe vers f1, et p dans f1 est 123. Pour une explication spécifique. , cliquez simplement sur cet article Blog

4. La fonction est appelée comme méthode d'un objet (là où je me suis trompé)

On m'a demandé d'écrire un objet avec plusieurs méthodes. J'ai soudainement défini une variable globale, puis je l'ai utilisée pour l'appeler dans la méthode de l'objet. L'intervieweur m'a demandé ce que c'était ? J'ai dit que cela devrait être une fenêtre, car j'utilise rarement cette méthode, et j'ai pensé que seul un nouveau ou un appel changerait la direction de cela. Il a dit que c'était faux et m'a demandé de revenir en arrière et de voir par moi-même maintenant que je l'ai essayé. , j'avais vraiment tort. Code postal

var value="father"; function mei(){} 
mei.value="child"; 
mei.get=function(){console.log(this.value)}; 
mei.show=function(){console.log(value)}; 
mei.get();   //child mei.show();  //father

Puisque get est appelé comme méthode de mei, ceci pointe ici vers mei.value, donc child est sorti

Quant à père, je le comprends ainsi. La fonction pointée par show est définie dans l'environnement global En raison de la chaîne de portée, la valeur ne se trouve pas dans show, donc je la recherche dans l'environnement où elle est. est défini, puis je trouve la valeur de l'environnement global, s'il y a un malentendu ici, j'espère que quelqu'un pourra le signaler !

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