passando this.method em setTimeout não funciona?
Eu estou vendo o problema com a passagem do método de objeto como argumento para setTimeout. Eu sei dentro da função aninhada, o escopo desta necessidade de ser definido manualmente, mas e se eu passar diretamente objeto de função, no meu caso this.counting. Qual é a necessidade de declarar a função anônima como primeiro argumento, this.counting já é uma função.
Mozilla também usa function (msg) {self.remind (msg);} em vez de this.remind dentro do primeiro argumento 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();