每次子对象运行回调函数时,我想设置父对象的属性。
我有以下代码:
function Track(id) {
this.callback = function(args) {
this.name = args;
}
this.child = new objectName(this.callback, property);
this.name = this.child.name;
}
我希望每次调用this.name
时都会更新this.callback
...有没有办法做到这一点?
答案 0 :(得分:0)
这是一个典型的范围问题,this
在调用回调时不会引用父对象。
请改为尝试:
function Track(id) {
var that = this;
this.callback = function(args) {
that.name = args;
}
this.child = new objectName(this.callback, property);
this.name = this.child.name;
}
编辑:请参阅merlin的评论,以便解释为什么this
可能导致问题。可能还有其他可能性来解决这个问题,即使用bind()
,但为此你也必须将父项传递给objectName构造函数。