在 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);
    }
});