浅拷贝和深拷贝只针对引用数据类型
1.深拷贝
深拷贝:拷贝的是对象,不是地址
方法:(1)通过递归实现深拷贝
(2)lodash/cloneDeep(https://www.lodashjs.com/)
(3)通过JSON。stringify()实现
函数递归:如果一个函数在内部可以调用其本身,那么这个函数就是递归函数
2.浅拷贝
浅拷贝:拷贝的是地址
方法:(1)拷贝对象:Object.assgin()/展开运算符{...obj}拷贝对象
(2)拷贝数组:Array.prototype.concat() 或者[...arr]
如果是简单数据类型拷贝值,引用数据类型拷贝的是地址(如果是单层对象,没问题,如果有多层就有问题)
直接赋值的方法,只要是对象,都会相互影响,因为是直接拷贝对象栈里面的地址
浅拷贝如果是一层对象,不相互影响,如果出现队曾对象拷贝还会相互影响
浅拷贝拷贝对象之后,里面的属性值是简单数据类型直接拷贝值;如果属性值是引用数据类型拷贝的是地址