Javascript中从子级到父级的回调函数
我正在编写一些javascript,可以实现以下功能:Javascript中从子级到父级的回调函数,javascript,callback,Javascript,Callback,我正在编写一些javascript,可以实现以下功能: main函数创建一个名为“currentState”的“ModelState”实例 “currentState”对象创建一个名为“scene”的“LabScene”实例 然后,场景尝试执行对“currentState”的回调,并将自身作为参数传递 我得到以下错误: 未捕获的TypeError:无法读取未定义的属性“push” 在ModelState.dirtyListCallback(Test.js:16)中 代码如下: function
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数组中。但事实并非如此。这是一个更大的代码库的一部分,在这个代码库中,子对象被期望将自己标识为其父对象的“脏”(需要重新绘制)。非常感谢您的帮助。当您在
LabScene
内部执行dirtyListCallback
时,此的范围将是(窗口| |全局)
您需要绑定要在中执行dirtyListCallback
方法的作用域
this.scene = new LabScene(this.dirtyListCallback.bind(this));
成功了。非常感谢。我想我需要对.bind()进行一些研究。我不确定我已经完全明白为什么它是那样工作的,但不是那样。你可以参考链接的问题,了解“这个”是如何工作的!!!因此,基本上,当你把一个函数传递到其他地方时,如果该函数的主体使用了关键字“this”,它就不会携带原始的“this”。它将它与它的目的地的任何“这个”上下文相关联。通过手动绑定,可以发送原始上下文。对吗?是的,先生!!你明白了:D