Maison >interface Web >js tutoriel >Explication détaillée de ceci dans Nodejs_node.js

Explication détaillée de ceci dans Nodejs_node.js

WBOY
WBOYoriginal
2016-05-16 15:07:561616parcourir

Le contenu suivant concerne cela dans nodejs plutôt que cela en javascript. Ceci dans nodejs est différent de cela en javascript dans le navigateur.

ce

en global
console.log(this); {}
this.num = 10;
console.log(this.num); 10
console.log(global.num); undefined

Ceci dans le monde global est un objet vide par défaut. Et dans le global, cela n’a aucun rapport avec l’objet global, alors à qui exactement cela pointe-t-il dans le global ? Nous expliquerons cela dans la seconde moitié de ce chapitre.

ce

dans une fonction
function fn(){
  this.num = 10;
}
fn();
console.log(this); {}
console.log(this.num); undefined
console.log(global.num); 10

Ceci dans la fonction pointe vers l'objet global, qui n'est pas le même objet que celui-ci dans le global. En termes simples, la variable que vous définissez via ceci dans la fonction équivaut à ajouter un attribut à global. c'est la même chose que global. Le "ceci" dans "n'a rien à voir avec ça".

Si vous n'y croyez pas, regardez le code ci-dessous pour le prouver.

function fn(){
  function fn2(){
    this.age = 18;
  }
  fn2();
  console.log(this); global
  console.log(this.age); 18
  console.log(global.age); 18
}
fn();

C'est vrai, dans la fonction, cela pointe vers global.

this

dans le constructeur
function Fn(){
  this.num = 998;
}
var fn = new Fn();
console.log(fn.num); 998
console.log(global.num); undefined

Dans le constructeur, cela pointe vers son instance, pas globale.

Nous pouvons maintenant en parler dans un contexte global. En parlant de cela dans un contexte global, cela a en fait quelque chose à voir avec la portée dans Nodejs. Si vous voulez en savoir plus sur la portée dans Nodejs, vous pouvez lire le document. discussion sur la portée dans le problème de portée de Nodejs. cet article.

Revenons au sujet, ceci dans le contexte global pointe vers module.exports.

this.num = 10;
console.log(module.exports); {num:10}
console.log(module.exports.num);

Pourquoi cela pointe-t-il vers module.exports dans la vue globale ? Ensuite, vous devez d'abord en savoir plus sur module.exports. Pour le moment, nous en apprendrons d'abord sur le module si nous en avons l'occasion. plus tard

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