2016-10-10 90 views
0

我想從另一個對象創建一個對象,但在更改第二個對象時不會更改第一個對象。如何在JavaScript中創建一個等於另一個對象的對象unbound

我甲肝嘗試:

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

你是什麼意思的「從」? – 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%確定理解你的問題的權利,但你想從另一個對象創建一個對象,對吧?而當你改變第二個它不會改變原來的?如果我理解你的話,你可以使用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' } 
相關問題