如何从javascript setInterval更新变量?

时间:2012-07-16 13:26:35

标签: javascript

说我有一个对象:

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

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

问题是count在setInterval中总是未定义,因此我永远不能将myObj中的count变量增加到0以外的其他值。

2 个答案:

答案 0 :(得分:3)

this的变化取决于被调用的函数(以及调用函数的方式)。

传递给setInterval的匿名函数是一个不同的函数。

首先将值复制到非魔术变量。

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

请参阅文档中的the this problem

答案 1 :(得分:0)

setInterval()在浏览器窗口范围内运行,因此this.count引用不存在的window.count