深拷贝
2020-07-11 本文已影响0人
再见地平线_e930
?深拷贝和浅拷贝的区别 ?
1.浅拷贝:只复制指向某个对象的指针,而不复制对象本身,新旧对象共享一块内存(只复制引用,而未复制真正的值,改变一个另一个也会被变);
2.深拷贝:复制并创建一个一摸一样的对象,不共享内存,修改新对象,旧对象保持不变。
深拷贝实现思路:
假设有这样一个对象:

0.遍历对象(数组) for(let prop in obj)
1.判断对象的每一项是不是原始值,如果是原始值则直接赋值 (补充:通过 typeOf()判断是否是原始值 返回object则不是(数组也是一种特殊对象))
2.如果不是原始值,判断该项是数组还是对象,建立相应的数组或者对象
如何判断数组和对象?

3.递归遍历该项
实现代码如下:

结果:
