0

假设我有一个对象:

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

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

问题是 setInterval 中的计数始终未定义,因此我永远不能将 myObj 中的计数变量增加到 0 以外的值。

4

2 回答 2

3

this根据被调用的函数(以及如何调用函数)而变化。

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

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

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

请参阅文档中this问题

于 2012-07-16T13:29:02.430 回答
0

setInterval()在浏览器窗口范围内运行,所以this.count指的是window.count不存在的。

于 2012-07-16T13:30:26.967 回答