L'uso dei metodi di istanza come callback per i gestori di eventi cambia l'ambito thisda "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, selfin contesti locali ha senso e segue il modello.
selfperché c'è unwindow.selfoggetto e potresti finire per usarlo accidentalmente se dimentichi di dichiarare il tuoselfvar (ad esempio quando sposti un codice). Questo può essere fastidioso da individuare / eseguire il debug. Meglio usare qualcosa del genere_this.