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
thisfait 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)
thisdépend du mode et de la façon dont la fonction est appelée:- En mode strict (
'use strict') —thisseraundefined. - En mode non strict — ce sera l'objet global (
windowdans les navigateurs).
- En mode strict (
function foo() {
console.log(this);
}
foo(); // window ou undefined en mode strict
- Dans une fonction fléchée
thisest 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.