El uso de métodos de instancia como devoluciones de llamada para los controladores de eventos cambia el alcance de this
de "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
this
es dinámico en JavaScript. Se determina cuando se llama a la función , no cuando se declara".
self === this
. Por lo tanto, self
en contextos locales tiene sentido y sigue el patrón.
self
ya que hay unwindow.self
objeto y podría terminar usándolo accidentalmente si olvida declarar su propiaself
var (por ejemplo, cuando mueve algún código). Esto puede ser molesto para detectar / depurar. Es mejor usar algo como_this
.