Ceci est un très vieux problème, mais je n'arrive pas à comprendre les autres solutions présentées ici.Javascript: Accéder à la bonne portée "sous" appliquer (...)
J'ai un objet
function ObjA() {
var a = 1;
this.methodA = function() {
alert(a);
}
}
qui est instancié comme
var myObjA = new ObjA();
Plus tard, je céder mes methodA
en fonction de gestionnaire dans un cadre Javascript externe, qui invoque à l'aide de la méthode apply(...)
. Lorsque la structure externe exécute mon methodA
, this
appartient à la fonction de cadre qui appelle ma méthode.
Puisque je ne peux pas changer comment ma méthode est appelée, comment puis-je retrouver l'accès à la variable privée a
? Mes recherches indiquent que les fermetures pourraient être ce que je cherche.
Vous avez raison. J'ai vraiment accès à 'a', mais je ne peux pas le vérifier en utilisant Firebug. Mais merci beaucoup de m'avoir éclairé! – Chau
Vous pouvez voir les portées parents et leurs variables dans Firebug en regardant à l'intérieur de la pseudo-variable 'scopeChain' dans l'onglet 'Watch'. – bobince
Oui oui, je sais. Mais ces variables n'apparaissent pas dans mon firebug. Je ne peux pas non plus y accéder dans la console - bien que ça ne réponde pas comme si elles n'étaient pas définies, juste aucune réponse. – Chau