JavaScript 对象深拷贝:使用展开运算符避免修改原对象
假设 const obj = {a:1,b:2,c:{d:3}},可以写成 obj.a=1;obj.b=2; obj.c.d=3;。
等待我给的新代码内容:
const obj = {a:1,b:2,c:{d:3}}; obj = {...obj, a:1, b:2, c: {...obj.c, d:3}}; // 使用展开运算符和对象的深拷贝,避免直接修改原对象的属性值
使用展开运算符和对象的深拷贝,可以避免直接修改原始对象的属性值。当您需要更新一个对象时,创建一个新的对象,并使用展开运算符将原始对象的所有属性复制到新对象中,然后更新您想要更改的属性。这样做可以确保您不会意外修改原始对象,并保持代码的可维护性和可靠性。
例如,以下代码演示了如何使用展开运算符创建对象的深拷贝:
const originalObj = { a: 1, b: 2, c: { d: 3 } };
const newObj = { ...originalObj, a: 4, c: { ...originalObj.c, d: 5 } };
console.log(originalObj); // { a: 1, b: 2, c: { d: 3 } }
console.log(newObj); // { a: 4, b: 2, c: { d: 5 } }
在上面的代码中,我们使用展开运算符将 originalObj 的所有属性复制到 newObj 中,然后更新了 newObj 中的 a 和 c.d 属性。这样,originalObj 保持不变,而 newObj 被更新为我们想要的新对象。
原文地址: https://www.cveoy.top/t/topic/mjWj 著作权归作者所有。请勿转载和采集!