Sobes.tech
Middle

Parlez de ceci dans différents contextes : dans les méthodes d'objet, dans les fonctions fléchées et dans les fonctions normales.

sobes.tech IA

Réponse de l'IA

En JavaScript, la valeur de this dépend du contexte d'appel de la fonction:

  • Dans les méthodes d'un objet this fait référence à l'objet auquel appartient la méthode:
const obj = {
  name: 'Alice',
  greet() {
    console.log(this.name);
  }
};
obj.greet(); // Alice
  • Dans une fonction normale (pas une méthode) this dépend du mode et de la façon dont la fonction est appelée:
    • En mode strict ('use strict') — this sera undefined.
    • En mode non strict — ce sera l'objet global (window dans les navigateurs).
function foo() {
  console.log(this);
}
foo(); // window ou undefined en mode strict
  • Dans une fonction fléchée this est hérité lexicalement du contexte externe, c'est-à-dire pris du scope où la fonction a été déclarée, pas où elle est appelée:
const obj = {
  name: 'Bob',
  arrowFunc: () => {
    console.log(this.name);
  },
  regularFunc() {
    const arrow = () => {
      console.log(this.name);
    };
    arrow();
  }
};
obj.arrowFunc(); // undefined ou le nom du contexte externe
obj.regularFunc(); // Bob

Ainsi, les fonctions fléchées sont utiles pour conserver le contexte this de la fonction externe, tandis que les fonctions normales et méthodes ont leur propre valeur de this selon la façon dont elles sont appelées.