我环顾了这里,几乎所有我能想到的,但我找不到解决我的问题,所以这里是:如何将对象引用传递给mootools中另一个对象的构造函数?
在我目前的项目中,我有一个类将一个对象作为其构造函数的一部分进行实例化,并将自身传入,以便子对象将引用其父对象。无论如何,理想情况下。然而,最终发生的事情是,孩子获得父对象的静态视图。 这里是我的意思的例子:
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的内容将是“乔治”,和我们所期待的是feedback2的内容是相同的。但是,事实并非如此。它是'fred',因为它具有父对象的静态视图,其名称属性在对象作为参数传入后发生了更改。为了您的进一步享受,我做了一个jsfiddle来说明这一点。
所以问题是这样的:有没有什么办法可以让一个子对象有一个真正的实际引用其父,或者我注定只有一个静态视图?
真棒扩展类。这固定了它。在我的真实项目中,我使用“所有者”而不是父项。 – 2012-08-14 21:04:02
实际上,当我这样做时,出现以下错误: 'Uncaught RangeError:Maximum call stack size exceeded' stack is a whole bunch of calls to'cloneOf Object.extend.clone' – 2012-08-14 23:59:00
这会发生在我在选项之前或之后放置所有者参考,而不是以任何方式重要。 – 2012-08-15 00:03:40