我正在编写一些执行以下操作的JavaScript:
未捕获的TypeError:无法读取未定义的属性“push” 在ModelState.dirtyListCallback(Test.js:16)
代码如下:
function main(){
//load state
var currentState = new ModelState();
}
function ModelState(){
this.dirtyList = [];
//initialize the scene.
this.scene = new LabScene(this.dirtyListCallback);
}
ModelState.prototype.dirtyListCallback = function(dirtyObject){
this.dirtyList.push(dirtyObject);
console.log(this.dirtyList);
};
function LabScene(dirtyListCallback){
dirtyListCallback(this);
}
我希望currentState对象将场景对象存储在dirtyList数组中。但那并没有发生。这是一个更大的代码库的一部分,在这个代码库中,子对象应该将自己标识为对其父级“脏”(需要重新绘制)。任何帮助将不胜感激。
答案 0 :(得分:2)
在this
内执行dirtyListCallback
时,LabScene
的范围将是(window || global)。
您需要绑定要执行dirtyListCallback
方法的范围。
this.scene = new LabScene(this.dirtyListCallback.bind(this));