2016-03-20 4 views
1

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のの内部に依存せず)

+1

'VAR myObj2 = Object.create (myObj) ' –

+0

@RajaprabhuAravindasamy:それは浅いです – Bergi

+0

@ベルギー:私はこれが重複しているとは思わない。 prototype.jsフレームワークのクラスシステムについては、一般的なjavascriptオブジェクトではなく、私に問い合わせることに注意してください。 – bodo

答えて

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); 
    } 
}); 
関連する問題