En utilisant des méthodes d'instance comme pour les callbacks gestionnaires d'événements change la portée de this
de « Mon exemple » à « Tout ce que vient d' appeler la fonction de rappel » . Donc mon code ressemble à ceci
function MyObject() {
this.doSomething = function() {
...
}
var self = this
$('#foobar').bind('click', function(){
self.doSomethng()
// this.doSomething() would not work here
})
}
Cela fonctionne, mais est-ce la meilleure façon de procéder? Cela me semble étrange.
this
est dynamique en JavaScript. Elle est déterminée lorsque la fonction est appelée , pas lorsqu'elle est déclarée."
self === this
. Par conséquent, self
dans des contextes locaux, cela a du sens et suit le modèle.
self
car il y a unwindow.self
objet et vous pourriez finir par l'utiliser accidentellement si vous oubliez de déclarer votre propreself
var (par exemple lorsque vous déplacez du code). Cela peut être ennuyeux à repérer / déboguer. Mieux vaut utiliser quelque chose comme_this
.