打字稿如何在没有引用的情况下复制对象

时间:2021-04-08 15:04:29

标签: angular typescript

我有一个对象

item = { selectedItems: [] };

我做到了:

item1 = { ...item };
item2 = Object.assign({}, item);
item3 = Object.create(item);

但是当我将 selectedItems 更改为 item1 时,它们会更改所有项目。这是角度项目 怎么了?或者什么是正确的方法? 还是浏览器缓存?看不懂

2 个答案:

答案 0 :(得分:1)

你需要一个深拷贝,例如:

let newItem = Json.parse(JSON.stringify(item));

答案 1 :(得分:0)

恕我直言,你的问题是其他的。您用来克隆对象的方式是返回对象而不引用原始对象的方式。更多信息可以看下一篇文章:https://dmitripavlutin.com/javascript-shallow-clone-objects/#:~:text=1.-,Cloning%20using%20object%20spread,the%20shallow%20copy%20of%20object%20

PD:也许您的应用中有一个逻辑,当您更改所选项目时,会更新其他变量。

相关问题