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,
thiscorrespond à l'objet qui appelle la fonction. - Si vous prenez une seule et même fonction et que vous l'attachez à deux objets différents,
thisfera référence à l'objet qui a déclenché l'appel. - En revanche, si la fonction est appelée depuis le niveau global,
thissera à nouveau l'objet global (window). - Petite nuance : si cette fonction globale s'exécute en mode strict (
strict mode),thissera simplementundefined.
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.