在原型.js中复制构造函数

copy constructor in prototype.js

本文关键字:复制 构造函数 js 原型      更新时间:2023-09-26

在原型中.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();

在我的特定情况下,我只需要一个浅拷贝,即实例的属性可以引用相同的对象。定义复制构造函数的某种方法肯定是最通用的选择。

这可能吗?(最好不依赖原型.js内部结构)

您可以使用

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