我的代码从构造函数ColorDispatcher创建一个调度程序。在window.onload之后,在1.5秒后定期调用dispatcher.hoverOutHandler。当调用changeBGColor时,标题中描述的typeError显示;但是我真的无法弄明白为什么。
var ColorDispatcher = function() {
this.changeColorTimerID = 0;
this.rgbColorArray = new Array(0, 0, 0);
};
ColorDispatcher.prototype = {
hoverOutHandler: function() {
this.changeColorTimerID = window.setInterval(this.changeBGColor, 1500);
},
changeBGColor: function() {
//something went wrong here.
alert(this.rgbColorArray[0]);
},
};
var dispatcher = new ColorDispatcher();
window.onload = dispatcher.hoverOutHandler();
答案 0 :(得分:1)
更改以下行:
this.changeColorTimerID = window.setInterval(this.changeBGColor.bind(this),1500);
setInterval在窗口范围内调用了函数,因此未找到该数组。使用.bind
,您可以将函数绑定到范围(在本例中为this
)。