我看到将对象方法作为参数传递给 setTimeout 的问题。我知道在嵌套函数内部,需要手动设置 this 的范围,但是如果我直接传递函数对象怎么办,在我的例子中是 this.counting。将匿名函数声明为第一个参数有什么需要,this.counting 已经是一个函数。
Mozilla还在 setTimeout 第一个参数中使用 function(msg) {self.remind(msg);} 而不是 this.remind。
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();