Використання методів екземплярів як зворотних викликів для обробників подій змінює область дії this
з "Мій екземпляр" на "Що б тільки не викликали зворотний виклик" . Тож мій код виглядає приблизно так
function MyObject() {
this.doSomething = function() {
...
}
var self = this
$('#foobar').bind('click', function(){
self.doSomethng()
// this.doSomething() would not work here
})
}
Це працює, але це найкращий спосіб зробити це? Мені це дивно виглядає.
this
динамічна в JavaScript Це визначається , коли функція. Називається , не тоді , коли вона оголошена.»
self === this
. Тому self
в місцевих контекстах є сенс і слідкуйте за зразком.
self
оскільки єwindow.self
об'єкт, і ви можете випадково його використовувати, якщо ви забудете оголосити свій власнийself
var (наприклад, пересуваючи якийсь код навколо). Це може дратувати пляму / налагодження. Краще використовувати щось подібне_this
.