引用(不是复制)一个类作为另一个类的成员- Mootools
Reference (not copy) a class as a member of another Class - Mootools
我有以下类
var Box = new Class({
Implements: [Options],
options: {
name: 'new',
weight: 0
},
initialize: function (options) {
this.setOptions(options);
},
getParent: function () {
return this.options.parent;
}
});
集合类
var Collection = new Class({
Implements: [Options],
options: {
boxes: []
},
boxes: [],
initialize: function (options) {
var self = this;
this.setOptions(options);
Array.each(this.options.boxes, function (box) {
self.boxes.push(new Box({
parent: self,
name: box.name,
weight: box.weight
}));
});
}
});
我将Collection
类(作为parent
)传递给Box类,当它被创建时
var newCollection = new Collection({
boxes: [
{
name: 'A',
weight: 9
},
{
name: 'B',
weight: 3
},
{
name: 'C',
weight: 2
},
{
name: 'D',
weight: 5
},
{
name: 'E',
weight: 7
}
]
});
我希望Box
类中的parent
是对Collection
类的引用,而不是副本,尽管每次创建Box
类时,我似乎都会获得newCollection
类的副本(每个盒子的长度不同)
Array.each(newCollection.boxes, function (box) {
console.log('*',box.getParent());
});
我是mootools的新手,尽管我已经阅读了文档,但这是我最终编写代码的方式。在mootools中是否有一种更被接受的编码模式,我可以通过它来引用parent
?
容易错过setOptions
(docs) 深度复制 options对象。只需在初始化Box后设置parent
属性即可。我在这里张贴了一个稍微修改过的代码版本
Array.each(this.options.boxes, function (box) {
var nB = new Box({
name: box.name,
weight: box.weight
});
// Note the difference
nB.parent = self;
self.boxes.push(nB);
});
相关文章:
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 使用clickToggle并在单击另一个元素时关闭元素
- 使用javascript将动态表从一个html页面打印到另一个html页
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 从Rally获取一个特定的标记,以便计算另一个字段中的值
- 无法从jquery Mobile导航栏重定向到另一个页面
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 字符串在将其传递给另一个活动Android JavaScript时读取Null
- 如何在鼠标悬停时在另一个图像上滑动图像.
- 导航到特定事件的另一个变量页面
- 我应该如何对具有相同原型的另一个对象的“私有”成员进行操作
- javascript将一个对象添加为另一个对象的成员
- 从根JSAPI对象(由prepscript创建)调用另一个JSAPI对象的类成员
- 如何让javascript对象的一个成员引用同一对象的另一个成员
- 引用(不是复制)一个类作为另一个类的成员- Mootools
- 使用另一个文件覆盖静态成员
- 私有成员被另一个实例覆盖