在 prototype.js 中复制构造函数
copy constructor in prototype.js
在 prototype.js 中您可以创建 类 例如像这样:
var MyClass = Class.create(
{
initialize: function (par1, par2)
{
this.data = $R(par1, par2).toArray();
}
});
并通过
实例化它们
var myObj = new MyClass(1, 7000);
现在,我该如何复制这个对象?以下不起作用:
var myObj2 = MyObj.clone();
在我的具体情况下,我只需要一个浅拷贝,即实例的属性可以引用相同的对象。某种定义复制构造函数的方法肯定是最通用的选择。
这可能吗? (最好不依赖 prototype.js 内部结构)
您可以使用 Prototype's Object.extend
(或原生 ES6 Object.assign
)将您的属性复制到 class 的新实例上:
var MyClass = Class.create({
initialize: function (par1, par2) {
this.data = $R(par1, par2).toArray();
},
clone: function() {
return Object.extend(Object.create(Object.getPrototypeOf(this)), this);
}
});
在 prototype.js 中您可以创建 类 例如像这样:
var MyClass = Class.create(
{
initialize: function (par1, par2)
{
this.data = $R(par1, par2).toArray();
}
});
并通过
实例化它们var myObj = new MyClass(1, 7000);
现在,我该如何复制这个对象?以下不起作用:
var myObj2 = MyObj.clone();
在我的具体情况下,我只需要一个浅拷贝,即实例的属性可以引用相同的对象。某种定义复制构造函数的方法肯定是最通用的选择。
这可能吗? (最好不依赖 prototype.js 内部结构)
您可以使用 Prototype's Object.extend
(或原生 ES6 Object.assign
)将您的属性复制到 class 的新实例上:
var MyClass = Class.create({
initialize: function (par1, par2) {
this.data = $R(par1, par2).toArray();
},
clone: function() {
return Object.extend(Object.create(Object.getPrototypeOf(this)), this);
}
});