Désolé si cela a été répondu, mais je ne pouvais pas trouver une recherche ... une chose difficile à rechercher, je pense!Scoping "this" en Javascript (et jQuery.extend)
Dire que j'ai ceci:
var MyPrototype = function() { this.init(); }
$.extend(MyPrototype.prototype, {
a: 5,
init: function() {
var thing = new SomeOtherClass();
thing.meth = this.meth;
// thing.meth() is called somewhere within thing;
},
meth: function() {
alert(this.a);
}
}
Fondamentalement, je traite avec une autre classe qui utilise ses propres méthodes comme, par exemple callbacks Je suis censé les remplacer par mes propres fonctionnalités. Mais j'ai besoin de garder la portée correcte de this
en le faisant (la seule chose qui m'importe de SomeOtherClass
est ce qui est passé au rappel, rien dans l'état).
Comme vous pouvez l'imaginer, cela ne fonctionne pas car thing
n'a pas de propriété a
! Je ne suis pas assez familier avec les subtilités du scoping Javascript pour savoir comment faire this
se référer à ce que je veux, bien que!
S'il vous plaît voir: http://stackoverflow.com/questions/520019/controlling-the-value-of- this-in-a-jquery-event ... et aussi: http://stackoverflow.com/questions/1043556/how-can-i-keep-the-context-of-this-in-jquery ... et vraiment, la plupart des questions dans: http://stackoverflow.com/questions/tagged/this+javascript (c'est un point de confusion extrêmement commun) – Shog9