En Python, self est explicite. Tu sais ce que c'est (l'instance courante).
En JS, this est... compliqué. Sa valeur change selon qui appelle la fonction.
Comportement classique
const user = {
nom: "Bond",
parler: function() {
console.log("Mon nom est " + this.nom);
}
};
user.parler(); // "Mon nom est Bond" (OK, 'this' est 'user')
Mais si tu sors la fonction...
const fonctionSeule = user.parler;
fonctionSeule(); // "Mon nom est undefined" !!! 😱 (Car 'this' est devenu global)
La solution Arrow Function
Les Arrow Functions n'ont pas leur propre this. Elles gardent celui du contexte parent.
C'est pour ça qu'on les adore.
const user = {
nom: "Bond",
waitAndSpeak: function() {
// Avec une arrow function, 'this' reste 'user'
setTimeout(() => {
console.log("Mon nom est " + this.nom);
}, 1000);
}
};
user.waitAndSpeak(); // Ça marche !
Résumé
Si tu as besoin de this (dans une classe), utilise une Arrow Function si tu es dans un callback.
Sinon, évite this si tu peux.