2012-07-16 102 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