Usando métodos de instância como retornos de chamada para manipuladores de eventos altera o escopo de this
partir "Meu instância" para "Seja qual for chamado apenas o retorno de chamada" . Então, meu código fica assim
function MyObject() {
this.doSomething = function() {
...
}
var self = this
$('#foobar').bind('click', function(){
self.doSomethng()
// this.doSomething() would not work here
})
}
Funciona, mas é a melhor maneira de fazê-lo? Parece estranho para mim.
this
é dinâmico em JavaScript. É determinado quando a função é chamada , não quando é declarada."
self === this
. Portanto, self
em contextos locais, faz sentido e segue o padrão.
self
pois existe umwindow.self
objeto, e pode acabar usando isso acidentalmente se esquecer de declarar seu próprioself
var (por exemplo, ao mover algum código). Isso pode ser irritante para detectar / depurar. Melhor usar algo parecido_this
.