Usando métodos de instância como retornos de chamada para manipuladores de eventos altera o escopo de thispartir "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, selfem contextos locais, faz sentido e segue o padrão.
selfpois existe umwindow.selfobjeto, e pode acabar usando isso acidentalmente se esquecer de declarar seu próprioselfvar (por exemplo, ao mover algum código). Isso pode ser irritante para detectar / depurar. Melhor usar algo parecido_this.