这是一个有点愚蠢的问题,但我注意到,当我,我们说声明一个对象
const test = {"foo": 1, "bar": 2}
console.log(test)
然后声明新变量,并给它第一个对象的值
const test2 = test;
从第二个变量中删除密钥,它将从两个变量中删除。
delete test2.foo
console.log(test2)
console.log(test)
有人可以解释为什么这是一件事,以及如何避免这个问题?
答案 0 :(得分:1)
执行const test2 = test;
时,您不是在创建新对象,而只是复制对同一对象的引用。如果你想创建一个全新的对象,你应该做一个浅的克隆:
const test2 = Object.assign({}, test);
然后你可以删除:
delete test2.user;
答案 1 :(得分:0)
问题是您正在分配引用而不是将对象复制到新变量。因此,当您删除该属性时,它将从两者中删除。
您可以使用ExecuteScalar
或者您可以使用第三方库,例如lodash的Object.assign()