在prototype.js中复制构造函数

时间:2016-03-20 11:34:44

标签: javascript class prototypejs copy-constructor

在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内部)

1 个答案:

答案 0 :(得分:2)

您可以使用Prototype's Object.extend(或原生ES6 Object.assign)将您的媒体资源复制到班级的新实例中:

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