说我有一个对象:
var myObj = function {
this.count = 0;
}
myObj.prototype {
setCount : function() {
var interval = setInterval(function() {
this.count++;
}, 500);
}
}
问题是count在setInterval中总是未定义,因此我永远不能将myObj中的count变量增加到0以外的其他值。
答案 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
。