js 深拷贝修改原数据会影响新数据吗
时间: 2023-12-08 09:03:36 浏览: 60
JS中的两种数据类型及实现引用类型的深拷贝的方法
在 JavaScript 中,如果对原始数据进行修改,不会影响深拷贝后的新数据。这是因为深拷贝对象是将原始对象完全复制到新对象中,而不是简单地复制它们的引用。因此,如果修改原始对象中的属性或数组元素,则深拷贝后的新对象不会受到影响。例如:
```javascript
const originalObj = { a: 1, b: { c: 2 } };
const newObj = JSON.parse(JSON.stringify(originalObj));
originalObj.b.c = 3;
console.log(newObj.b.c); // 2
```
在这个例子中,我们使用 JSON.parse(JSON.stringify(object)) 对原始对象 originalObj 进行深拷贝,并将其保存在新对象 newObj 中。然后,我们修改原始对象的属性 b.c。由于原始对象和新对象中的属性 b 不是对同一对象的引用,所以修改原始对象中的属性 b.c 不会影响新对象中的属性 b.c。需要注意的是,如果原始对象中的属性或数组元素也是一个对象或数组,则深拷贝后的新对象中对应的属性或元素仍然是对原始对象中该属性或元素的深拷贝。因此,如果修改原始对象中嵌套的对象或数组,则深拷贝后的新对象中对应的属性或元素也不会受到影响。
阅读全文