J'ai une question concernant la façon dont le pointeur "this" est traité dans un scénario de fonction imbriquée.
Disons que j'insère cet exemple de code suivant dans une page Web. J'obtiens une erreur lorsque j'appelle la fonction imbriquée "doSomeEffects ()". J'ai vérifié dans Firebug et cela indique que lorsque je suis dans cette fonction imbriquée, le pointeur "this" pointe en fait vers l'objet "window" global - ce à quoi je ne m'attendais pas. Je ne dois pas comprendre quelque chose correctement car je pensais que depuis que j'ai déclaré la fonction imbriquée dans une fonction de l'objet, elle devrait avoir une portée "locale" par rapport à la fonction (c'est-à-dire que le pointeur "this" ferait référence à l'objet lui-même comme comment c'est dans ma première déclaration "si").
Tous les pointeurs (sans jeu de mots) seraient appréciés.
var std_obj = {
options : { rows: 0, cols: 0 },
activeEffect : "none",
displayMe : function() {
// the 'this' pointer is referring to the std_obj
if (this.activeEffect=="fade") { }
var doSomeEffects = function() {
// the 'this' pointer is referring to the window obj, why?
if (this.activeEffect=="fade") { }
}
doSomeEffects();
}
};
std_obj.displayMe();
this
fait référence à l'objet sur lequel la fonction est appelée.
var self = this;
et ensuite faire référence self
dans la fonction interne via la fermeture.
doSomeEffects
n'est associé à aucun objet en particulier, on this
suppose donc que c'est la fenêtre, la mère de tous les éléments.