Que retourne 'this' en JavaScript ?

Au niveau global (top level), this fait généralement référence à l'objet global, qui est window dans un navigateur.

Mais il y a un piège : si vous êtes dans un module, this sera tout simplement undefined.


Dans une fonction

Ici, tout dépend de la manière dont la fonction est appelée.

  • En règle générale, this correspond à l'objet qui appelle la fonction.
  • Si vous prenez une seule et même fonction et que vous l'attachez à deux objets différents, this fera référence à l'objet qui a déclenché l'appel.
  • En revanche, si la fonction est appelée depuis le niveau global, this sera à nouveau l'objet global (window).
  • Petite nuance : si cette fonction globale s'exécute en mode strict (strict mode), this sera simplement undefined.

Et il y a aussi une exception à cette exception : les fonctions fléchées (arrow functions). Les fonctions fléchées ne créent pas leur propre liaison this. À la place, elles utilisent la valeur du this de l'environnement qui les entoure.


Dans une classe

Dans une classe, this fera presque toujours référence à l'objet en cours de construction (l'instance).

Mais il y a, bien sûr, un autre piège : les propriétés statiques. Comme les propriétés statiques ne sont pas propres à une instance de la classe, this fera alors référence à la classe elle-même.