对象 属性-Javascript 中的值行为

Object property-value behavior in Javascript

在下面的代码中,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);

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

var objB = objA;

您实际上是在创建对 objA 的引用。如果你想在没有引用的情况下复制对象,你可以使用扩展语法:

var objB = {...objA};

另见:How do I correctly clone a JavaScript object?