我想克隆一个对象然后更改它,但是当我这样做时,原始对象也会更改:
let items = result.Project.ItemGroup[1].Build;
let newItem = { ...items[0] };
newItem.$.Include = `test`;
在对newItem
对象进行分配后,items[0]
的值也被更改。
答案 0 :(得分:6)
仅传播浅副本。您没有更改要复制的内容,而是在对象的$
属性上进行了更改,但您没有复制。 items[0].$
和newItem.$
都引用相同对象:
const items = [
{
$: {
Include: "test"
}
}
];
let newItem = {...items[0]};
console.log(items[0].$ === newItem.$); // true
您需要类似的内容来也克隆$
对象:
let newItem = {...items[0], $: {...items[0].$}};
const items = [
{
$: {
Include: "test"
}
}
];
let newItem = {...items[0], $: {...items[0].$}};
console.log(items[0].$ === newItem.$); // false
newItem.$.Include = "updated";
console.log(items[0].$.Include); // "test"
console.log(newItem.$.Include); // "updated"