Avatar ·

Comment accéder correctement à `this` dans une fonction de rappel en JavaScript ?

Bonjour à tous ! Je viens de commencer à apprendre JavaScript et j'ai rencontré un problème que je n'arrive pas à résoudre. J'ai un objet `user` qui a une propriété `name` et une méthode `greet`. Je veux que la méthode `greet` affiche un message de bienvenue avec le nom de l'utilisateur après 2 secondes. Pour cela, j'utilise `setTimeout`. Mais quand j'exécute le code, au lieu du nom, il affiche `undefined`. Voici mon code : ```javascript const user = { name: 'Anna', greet: function() { setTimeout(function() { console.log(`Bonjour, ${this.name} !`); }, 2000); } }; user.greet(); // Affiche "Bonjour, undefined !" ``` Je comprends que le problème vient du fait que dans la fonction de rappel de `setTimeout`, le contexte `this` est perdu. Mais je ne comprends pas pourquoi cela se produit ni comment le corriger. J'ai essayé de lire la documentation, mais c'est trop compliqué. S'il vous plaît, expliquez en termes simples ce qu'est `this` en JavaScript et comment le transmettre correctement dans une fonction de rappel. Je vous serais reconnaissant pour des exemples avec explications ! <<>>

Problème