オブジェクト メソッドを引数として setTimeout に渡すと問題が発生します。ネストされた関数内で、このスコープを手動で設定する必要があることは知っていますが、関数オブジェクトを直接渡す場合、私の場合は this.counting. 匿名関数を最初の引数として宣言する必要は何ですか。 this.counting は既に関数です。
Mozillaは、setTimeout の最初の引数内で this.remind の代わりに function(msg) {self.remind(msg);} も使用します。
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();