我已经环顾了这里,几乎所有我能想到的其他地方,但我找不到解决我的问题的方法,所以这里是:
在我当前的项目中,我有一个类实例化一个对象作为其构造函数的一部分,将自身传递进来,因此子对象将具有对其父对象的引用。无论如何,理想情况下。然而,最终发生的是子对象获得了父对象的静态视图。这是我的意思的一个例子:
var myParentClass = new Class({
name: '',
child: null,
initialize: function(){
this.name = 'fred';
this.child = new myChildClass({ parent: this });
this.name = 'george';
this.setFeedback('feedback1');
this.child.setFeedback('feedback2');
},
setFeedback: function(id){
$(id).set('html',this.name);
}
});
var myChildClass = new Class({
Implements: [Options],
options: {
parent: null,
},
initialize: function(options){
this.setOptions(options);
},
setFeedback: function(id){
this.options.parent.setFeedback(id);
}
});
var a = new myParentClass();
在这个例子中,feedback1 的内容是 'george',我们希望 feedback2 的内容是一样的。然而,事实并非如此。它是“fred”,因为它具有父对象的静态视图,其名称属性在对象作为参数传入之后发生更改。为了您的进一步享受,我制作了一个jsfiddle来说明这一点。
所以问题是这样的:有什么方法可以让子对象对其父对象有真正的实际引用,还是我注定只能拥有静态视图?