JS深浅拷贝

0 阅读1分钟

如果直接用赋值进行对象拷贝,会导致两个对象拥有相同的地址,导致在修改其中一个的时候会同时修改


这个时候我们可以使用浅拷贝

浅拷贝有几种方式:

1.使用 ... 展开运算符来给新对象直接赋值

2.使用Object.assign()来拷贝

image.png

image.png

image.png


深拷贝

首先深拷贝和深拷贝只针对引用类型

深拷贝:拷贝的是对象,不是地址

常见方法:

1.通过递归实现深拷贝

2.lodash/cloneDeep

3.通过JSON.stringify() 实现

1.函数递归:

如果一个函数在内部可以调用其本身,那么这个函数就是递归函数

image.png 2.js库lodash里面cloneDeep内部实现了深拷贝

需要先引用js库

image.png 3.利用JSON实现深拷贝

把对象转化为 JSON 字符串,再将 JSON 字符串转化为对象

image.png