深拷贝的实现方式

83 阅读1分钟

深拷贝:是在堆内存中为新对象建立一个空间,当改变对象时,原对象不会被修改;

实现方式:

一: 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()