如何在未绑定的JavaScript中创建与另一个对象相等的对象

时间:2016-10-10 12:02:22

标签: javascript

我想从另一个对象创建一个对象,但是在更改第二个对象时没有第一个对象发生更改。

我试过了:

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

2 个答案:

答案 0 :(得分:0)

Object.create实际上创建了对象,但随后将第一个对象作为新对象的原型。这样您就可以使用第一个对象中定义的属性和函数,但您也可以使用相同的名称定义属性,而不会覆盖第一个对象:

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

答案 1 :(得分:0)

我不是百分百肯定理解你的问题,但你想从另一个对象创建一个对象,对吗?当你改变第二个时它不会改变原来的那个?如果我理解你,你可以使用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' }