我看到傳遞對象方法作爲setTimeout參數的問題。 我知道里面的嵌套函數,這需要手動設置的範圍,但如果我直接傳遞函數對象,在我的情況this.counting。什麼是需要聲明匿名函數作爲第一個參數,this.counting已經是一個函數。不起作用?
Mozilla也使用函數(msg){self.remind(msg);}而不是this.remind在setTimeout的第一個參數中。
function Timer(count,start){
this.count = count;
this.start = start;
}
//below code works
Timer.prototype.counting = function(){
var self = this;
setTimeout(function(){self.counting();},this.start);
console.log(this.count);
this.count++;
};
//below code doesn't work
/*
Timer.prototype.counting = function(){
setTimeout(this.counting,this.start);
console.log(this.count);
this.count++;
};
*/
var t1 = new Timer(0,1000);
t1.counting();
var t2 = new Timer(100,1000);
t2.counting();