2016-03-20 40 views
1

prototype.js'de sınıflar oluşturabilirsiniz. Böyle:kopya kurucusu

var MyClass = Class.create(
{ 
    initialize: function (par1, par2) 
    { 
     this.data = $R(par1, par2).toArray(); 
    } 
}); 

ve Şimdi

var myObj = new MyClass(1, 7000); 

yoluyla örneğini, nasıl bu nesneyi kopyalayabilirim? Aşağıdaki çalışmaz:

var myObj2 = MyObj.clone(); 

benim özel durumda, sadece örneğinin nitelikleri aynı referans nesne olarak kullanabilirsiniz yani basit bir kopyasını, gerekir. Bir kopya kurucuyu tanımlamanın bir yolu kesinlikle en çok yönlü seçenek olacaktır.

Bu mümkün mü?

+1

'var myObj2 = Object.create (myObj) –

+0

@RajaprabhuAravindasamy: Bu sığlıktan daha az olan – Bergi

+0

@ Bugi: Bunun bir kopya olduğunu sanmıyorum. Genel javascript nesnelerini değil prototype.js çerçevesinin sınıf sistemini sorduğumu farkettim. – bodo

cevap

2

(Tercihen prototype.js iç yapıları dayanmadan) Sen Prototype's Object.extend kullanabilirsiniz (veya yerli ES6 Object.assign) kendi sınıfındaki yeni bir örneği üzerine özelliklerini kopyalamak için:

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