我想從另一個對象創建一個對象,但在更改第二個對象時不會更改第一個對象。如何在JavaScript中創建一個等於另一個對象的對象unbound
我甲肝嘗試:
var ojb2 = new Object(obj1); // obj1 is still bound to obj2
Var obj2 = Object.create(obj1); // does not create object at all
我想從另一個對象創建一個對象,但在更改第二個對象時不會更改第一個對象。如何在JavaScript中創建一個等於另一個對象的對象unbound
我甲肝嘗試:
var ojb2 = new Object(obj1); // obj1 is still bound to obj2
Var obj2 = Object.create(obj1); // does not create object at all
的Object.create實際創建的對象,但隨後將第一個對象爲原型的新對象。這樣,您就可以使用的第一個對象定義的屬性和功能,但你也可以使用相同的名稱定義屬性,而不會覆蓋的第一個對象:
var obj1 = {a: 20};
var obj2 = Object.create(obj1);
obj2.a = 10;
// obj2 = {
// a: 10,
// __proto__: {
// a: 20
// }
//}
我不是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' }
你是什麼意思的「從」? – Bergi
'Object.create'將成功創建一個繼承自'obj1'的對象 – Bergi
[在JavaScript中深度克隆對象的最有效方法是什麼?](http://stackoverflow.com/questions/122102/什麼是最有效的方法來深入克隆一個對象的JavaScript) – Mistalis