深拷贝:是在堆内存中为新对象建立一个空间,当改变对象时,原对象不会被修改;
实现方式:
一: Object.assing(); 对对象进行深拷贝,但是如果当对象内有被嵌套的对象时,被嵌套的对象进行的是浅拷贝
const obj = {a:1,b:2};
const newObj = {};
Object.assign(newObj,obj); // newObj {a:1,b:2}
newObj.a=0; // newObj {a:0,b:2}
console.log(obj); // {a:1,b:2}
· 这种方式只适合层次单一的对象,对于深层次的对象不太适合。
二:JSON; 会构建新的内存用以存放新对象
三:递归实现
四: lodash的_.cloneDeep()