Pourquoi 'moi' et 'ceci' sont-ils indéfinis quand setTimeout appelle le callback anonyme?Javascript 'this' Problème
var gMyObj = new MyObj();
gMyObj.myFunc();
function MyObj() {
this.myFunc = function() {
var me = this;
alert(me.constructor); // defined
setTimeout(function(me) {
alert(me.constructor); // undefined
}, 100);
};
}
Résolution: La réponse sélectionnée est correcte, merci. Ma question était une simplification du vrai problème que j'avais, qui s'est avéré être la façon dont jQuery modifie 'ceci' dans la méthode click() pour qu'il pointe vers l'élément DOM concerné. J'avais créé un nouveau var, 'moi', pour conserver 'ceci', et j'essayais de le passer à la méthode du clic. Tout ce que je devais faire était juste d'utiliser 'moi' à l'intérieur de l'événement click, et laisser la fermeture garder une référence. Passer 'moi' dans click() a échoué, pour la même raison qu'il a échoué dans cet exemple, à savoir que click() ne l'attendait pas.
+1. mais moi n'a aucune valeur, indéfini. null est une valeur. – AnthonyWJones