2012-07-16 96 views
0

說我有一個對象:如何從javascript setInterval更新變量?

var myObj = function { 
this.count = 0; 
} 

myObj.prototype { 
    setCount : function() { 
     var interval = setInterval(function() { 
      this.count++; 
     }, 500); 
    } 
} 

的問題計數總是setInterval的內不確定的,所以我可以永遠增量內MyObj中的計數變量是不是依賴於0

回答

3

this變化以外的東西被調用的函數(以及函數如何被調用)。

您傳遞給setInterval的匿名函數是一個不同的函數。

首先將該值複製到非魔術變量。

setCount : function() { 
     var that = this; 
     var interval = setInterval(function() { 
      that.count++; 
     }, 500); 

請參閱the this problem在文檔中。

+0

或使用['bind'](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/bind) – Yoshi 2012-07-16 13:31:13

0

setInterval()在瀏覽器窗口的範圍內運行,所以this.count是指window.count不存在。

+0

如何抓取我想要的實際計數的引用,然後用setInterval的?或者除了setInterval之外還有其他一些方法嗎? – Rolando 2012-07-16 13:31:20