2016-10-10 2 views
0

2番目のオブジェクトを変更すると、別のオブジェクトからオブジェクトを作成したいが、最初のオブジェクトは変更しない。JavaScriptで別のオブジェクトと等しいオブジェクトを作成する方法

私が試したHAV:

var ojb2 = new Object(obj1); // obj1 is still bound to obj2 
Var obj2 = Object.create(obj1); // does not create object at all 
+0

"from"とはどういう意味ですか? – Bergi

+0

'Object.create'は' obj1'を継承するオブジェクトを正常に作成します – Bergi

+5

[JavaScriptでオブジェクトを深くクローンする最も効率的な方法は何ですか?](http://stackoverflow.com/questions/122102/)最も効率的な方法から深いクローン、つまりオブジェクト内のjavascript) – Mistalis

答えて

0

Object.createは実際にオブジェクトを作成しますが、その後、新しいオブジェクトのプロトタイプとしての最初のオブジェクトを置きます。あなたが最初のオブジェクトで定義されたプロパティと関数を使用することができますが、あなたはまた、最初のオブジェクトを上書きせずに、同じ名前のプロパティを定義することができますこの方法:

var obj1 = {a: 20}; 
var obj2 = Object.create(obj1); 
obj2.a = 10; 
// obj2 = { 
// a: 10, 
// __proto__: { 
//  a: 20 
// } 
//} 
0

は、私は100%確実ではありませんよあなたの質問を正しく理解していますが、別のオブジェクトからオブジェクトを作成したいのですか?そして、あなたが2番目のものを変更するとき、それは元のものを変更しませんか?私があなたを理解すれば、new Object()を使うことができます。 使用している場合の例を次に示します。

var obj1 = { 
    asd : "asd", 
    asd2 : "asd2" 
}; 
var obj2 = new Object(obj1); 
console.log(obj1); //{ asd: 'asd', asd2: 'asd2' } 
console.log(obj2); //{ asd: 'asd', asd2: 'asd2' } 
obj2 = { 
    aasd : "aasd", 
    aasd2 : "aasd2" 
}; 
console.log(obj1); //{ asd: 'asd', asd2: 'asd2' } 
console.log(obj2); //{ aasd: 'aasd', aasd2: 'aasd2' } 
関連する問題