具有TypeError的构造函数中的未定义数组:无法读取未定义的属性“0”

时间:2017-02-07 11:53:58

标签: javascript

我的代码从构造函数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();

1 个答案:

答案 0 :(得分:1)

更改以下行:

 this.changeColorTimerID = window.setInterval(this.changeBGColor.bind(this),1500); 

setInterval在窗口范围内调用了函数,因此未找到该数组。使用.bind,您可以将函数绑定到范围(在本例中为this)。