Użycie metod instancji jako wywołań zwrotnych dla procedur obsługi zdarzeń zmienia zakres this
z „Moje wystąpienie” na „Cokolwiek, co właśnie wywołało wywołanie zwrotne” . Mój kod wygląda tak
function MyObject() {
this.doSomething = function() {
...
}
var self = this
$('#foobar').bind('click', function(){
self.doSomethng()
// this.doSomething() would not work here
})
}
Działa, ale czy to najlepszy sposób, aby to zrobić? Wygląda mi to dziwnie.
this
JavaScript jest dynamiczna w JavaScript. Jest określana, kiedy funkcja jest wywoływana , a nie kiedy jest deklarowana”.
self === this
. Dlatego self
w lokalnych kontekstach ma sens i jest zgodny z tym wzorcem.
self
ponieważ istnieje jakiświndow.self
obiekt i możesz go użyć przypadkowo, jeśli zapomnisz zadeklarować swój własnyself
var (np. Podczas przenoszenia jakiegoś kodu). Może to być denerwujące w wykrywaniu / debugowaniu. Lepiej użyć czegoś takiego_this
.