El uso de métodos de instancia como devoluciones de llamada para los controladores de eventos cambia el alcance de thisde "Mi ejemplo" a "Lo que acaba de llamar la devolución de llamada" . Entonces mi código se ve así
function MyObject() {
this.doSomething = function() {
...
}
var self = this
$('#foobar').bind('click', function(){
self.doSomethng()
// this.doSomething() would not work here
})
}
Funciona, pero ¿es esa la mejor manera de hacerlo? Me parece extraño
thises dinámico en JavaScript. Se determina cuando se llama a la función , no cuando se declara".
self === this. Por lo tanto, selfen contextos locales tiene sentido y sigue el patrón.
selfya que hay unwindow.selfobjeto y podría terminar usándolo accidentalmente si olvida declarar su propiaselfvar (por ejemplo, cuando mueve algún código). Esto puede ser molesto para detectar / depurar. Es mejor usar algo como_this.