gpt4 book ai didi

javascript - 如何将对象引用传递给 mootools 中另一个对象的构造函数?

转载 作者:行者123 更新时间:2023-11-30 10:39:28 24 4
gpt4 key购买 nike

我环顾四周,几乎所有我能想到的地方,但我找不到解决我的问题的方法,所以这里是:

在我当前的项目中,我有一个类实例化一个对象作为其构造函数的一部分,将自身传递进来,这样子对象将具有对其父对象的引用。无论如何,理想情况下。然而,最终发生的是子对象获得了父对象的静态 View 。这是我的意思的一个例子:

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”,因为它具有父对象的静态 View ,其名称属性在对象作为参数传入后发生了变化。为了您的进一步享受,我制作了一个 jsfiddle来说明这一点。

所以问题是:有什么方法可以让子对象真正引用其父对象,还是我注定只能拥有静态 View ?

最佳答案

这是因为 setOptions 方法通过 Object.merge 取消引用属性到一个新的对象中,将它们克隆到子实例的本地原型(prototype)中。

https://github.com/mootools/mootools-core/blob/master/Source/Class/Class.Extras.js#L110

更改构造函数以接受另一个参数、parent 并静态存储 this.parent = parent,然后从中调用。

顺便说一句,不要使用 .parent,因为当您在 mootools 中扩展类时,这是保留的:)

关于javascript - 如何将对象引用传递给 mootools 中另一个对象的构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11959012/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com