对象 属性-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);
var objB = objA;
您实际上是在创建对 objA
的引用。如果你想在没有引用的情况下复制对象,你可以使用扩展语法:
var objB = {...objA};
另见:How do I correctly clone a JavaScript object?
在下面的代码中,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);
var objB = objA;
您实际上是在创建对 objA
的引用。如果你想在没有引用的情况下复制对象,你可以使用扩展语法:
var objB = {...objA};
另见:How do I correctly clone a JavaScript object?