Maison >interface Web >js tutoriel >Comment « ceci » se comporte-t-il différemment dans les modules, les fonctions et les écouteurs d'événements Node.js ?

Comment « ceci » se comporte-t-il différemment dans les modules, les fonctions et les écouteurs d'événements Node.js ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-01 14:24:14402parcourir

How Does `this` Behave Differently in Node.js Modules, Functions, and Event Listeners?

Comprendre « ceci » dans les modules et fonctions Node.js

Lors de l'utilisation de « ceci » dans Node.js, il est crucial de comprendre son comportement variable en fonction du contexte.

Module Portée

Dans le code de niveau supérieur d'un module Node, "this" équivaut à module.exports. Il s'agit d'un objet vide, comme vous l'avez observé.

Portée de la fonction

Au sein d'une fonction, "this" est à nouveau déterminé avant chaque exécution. Sa valeur dépend de la façon dont la fonction est appelée :

  • aFunction() : Lorsqu'il est appelé directement, "this" devient l'objet global (en raison du mode non strict).
  • aFunction .call(newThis) : lorsqu'il est appelé avec .call(), "this" est défini sur newThis.
  • Écouteurs d'événements : lorsqu'une fonction est utilisée comme écouteur d'événements (par exemple, addEventListener), "this" est généralement défini sur l'élément qui a déclenché l'événement.

Chargement du module de nœud

Lorsque vous exigez des fichiers JavaScript en tant que nœud modules, le moteur Node encapsule le code du fichier dans une fonction. Cette fonction wrapper est invoquée avec "this" défini sur module.exports.

Conclusion

Les différentes valeurs de "this" que vous avez observées proviennent de l'utilisation de "this" à l'intérieur de différentes fonctions :

  • Le premier "this" dans var a = this ; appartient à la fonction module-wrapper créée par le nœud, où "this" est module.exports (objet vide).
  • Le deuxième "this" dans aFunction() appartient à aFunction lui-même, qui, lorsqu'il est exécuté sans strict mode, définit "this" sur l'objet global.

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