L'uso dei metodi di istanza come callback per i gestori di eventi cambia l'ambito this
da "Mia istanza" a "Qualunque cosa abbia appena chiamato il callback" . Quindi il mio codice è simile a questo
function MyObject() {
this.doSomething = function() {
...
}
var self = this
$('#foobar').bind('click', function(){
self.doSomethng()
// this.doSomething() would not work here
})
}
Funziona, ma è questo il modo migliore per farlo? Mi sembra strano.
this
è dinamico in JavaScript. Viene determinato quando viene chiamata la funzione , non quando viene dichiarata."
self === this
. Pertanto, self
in contesti locali ha senso e segue il modello.
self
perché c'è unwindow.self
oggetto e potresti finire per usarlo accidentalmente se dimentichi di dichiarare il tuoself
var (ad esempio quando sposti un codice). Questo può essere fastidioso da individuare / eseguire il debug. Meglio usare qualcosa del genere_this
.