浅拷贝深拷贝

90 阅读1分钟

浅拷贝深拷贝

浅拷贝

浅拷贝会创建一个新对象或数组,但新对象/数组的元素仍然引用原对象/数组中的相同内存地址。当修改其中一个对象/数组的属性时,另一个对象/数组也会受到影响。

实现方法

一、使用展开运算符(Spread Operator)进行浅拷贝

const original = { name: 'John', age: 30 };
const shallowCopy = { ...original };
const original = [1, 2, 3, 4];
const shallowCopy = [...original];

二、使用Object.assign()进行浅拷贝

const original = { name: 'John', age: 30 };
const shallowCopy = Object.assign({}, original);
const original = [1, 2, 3, 4];
const shallowCopy = Object.assign([], original);

深拷贝

深拷贝会创建一个完全独立的新对象或数组,新对象/数组中的元素与原对象/数组中的元素不共享内存地址。当修改其中一个对象/数组的属性时,另一个对象/数组不会受到影响。

一、使用JSON.parse()和JSON.stringify()进行深拷贝

const original = { name: 'John', age: 30 };
const deepCopy = JSON.parse(JSON.stringify(original));
const original = [1, 2, 3, 4];
const deepCopy = JSON.parse(JSON.stringify(original));

二、递归函数

image.png