在下面的代码中,如何将objA.foo值设置为“ bar”? (JavaScript新手开发人员)。 JS中的哪个概念或功能将objA属性的值设置为“ bar”?
var objA = Object.create({
foo: 'foo'
});
var objB = objA;
objB.foo = 'bar';
console.log(objA.foo);
console.log(objB.foo);
答案 0 :(得分:2)
var objB = objA
不会创建该对象的副本。它引用了objA
。通过引用修改对象会更改持有该对象引用的两个变量。
要克隆对象,可以使用JSON.parse(JSON.stringify(obj))
。
var objA = Object.create({
foo: 'foo'
});
var objB = JSON.parse(JSON.stringify(objA));
objB.foo = 'bar';
console.log(objA.foo);
console.log(objB.foo);
您也可以使用Object.assign({}, obj)
。
var objA = Object.create({
foo: 'foo'
});
var objB = Object.assign({}, objA);
objB.foo = 'bar';
console.log(objA.foo);
console.log(objB.foo);
请参见documentation。
答案 1 :(得分:0)
var objB = objA;
您实际上是在创建对objA
的引用。如果您想在没有引用的情况下复制对象,则可以使用传播语法:
var objB = {...objA};