2015-12-02 2 views
1

Я хотел бы начать метод setInterval в javascript каждый раз, когда я создаю экземпляр класса (я знаю, я не должен называть его классом в javascript, ...). setInterval вызывает метод класса update каждые 500 миллисекунд. Вот мой код:Могу ли я использовать setInterval в определении «класса» javascript?

function Test(a) { 
    this.a = a; 
    this.b = 0; 
    this.interval = setInterval(this.update, 500); 
}; 

Test.prototype.update = function() { 
    console.log(this.b); 
    this.b += 1; 
    if (this.b > 10) clearInterval(this.interval); 
}; 

Но когда я создаю экземпляр класса с var mytest = new Test(1), свойство класса b кажется неопределенным в первом вызове и NaN впоследствии (из-за добавления 1 к неопределенным дает NaN). Почему b не 0 в первом звонке?

ответ

2

Объем this меняется при установкеInterval пожаров. this будет window. Чтобы сохранить область действия, вы можете использовать bind.

setInterval(this.update.bind(this), 500); 
+0

Большое спасибо. Это хорошо работает. – Chumo