Использование методов экземпляра в качестве обратных вызовов для обработчиков событий изменяет область действия thisс «Мой экземпляр» на «Независимо от того, что только что вызвало обратный вызов» . Так что мой код выглядит так
function MyObject() {
this.doSomething = function() {
...
}
var self = this
$('#foobar').bind('click', function(){
self.doSomethng()
// this.doSomething() would not work here
})
}
Это работает, но это лучший способ сделать это? Это выглядит странно для меня.
thisJavaScript является динамическим в JavaScript. Оно определяется при вызове функции , а не при ее объявлении».
self === this. Поэтому selfв локальном контексте имеет смысл и следует шаблону.
selfпосколькуwindow.selfобъект существует, и вы можете случайно использовать его, если забудете объявить свой собственныйselfvar (например, при перемещении некоторого кода). Это может раздражать, чтобы обнаружить / отладить. Лучше использовать что-то вроде_this.