2017-10-15 57 views
0

我想在撥打this.start時每this.delay ms打電話this.cycle。 當然,這是行不通的:在setInterval中執行this.function

function Timer(delay, repetitions){ 
 
    this.delay = delay; 
 
    this.maxrep = repetitions; 
 
    this.rep = 0; 
 

 
    this.start = function(){ 
 
    this.interval = setInterval(function(){ 
 
     this.cycle(); 
 
    },this.delay); 
 
    } 
 

 
    this.cycle = function(){ 
 
    this.rep++; 
 
    console.log(this.rep); 
 
    if(this.rep >= this.max){ 
 
     clearInterval(this.interval); 
 
    } 
 
    } 
 
}

回答

0

一個問題,我可以看到的是,this定時器功能裏面是不是這樣,你認爲它是。

因此,無論

var me = this 
this.start = function(){ 
    this.interval = setInterval(function(){ 
    me.cycle(); 
    },this.delay); 
} 

或者只是使用箭頭功能

this.start = function(){ 
    this.interval = setInterval(() => this.cycle(), this.delay); 
} 
+0

謝謝!我不習慣箭頭功能,這就是爲什麼。 – AlreadyAlreadyTaken

相關問題