深拷贝

2020-07-11  本文已影响0人  再见地平线_e930

?深拷贝和浅拷贝的区别 ?

1.浅拷贝:只复制指向某个对象的指针,而不复制对象本身,新旧对象共享一块内存(只复制引用,而未复制真正的值,改变一个另一个也会被变);

2.深拷贝:复制并创建一个一摸一样的对象,不共享内存,修改新对象,旧对象保持不变。

深拷贝实现思路:

假设有这样一个对象:

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


2.如果不是原始值,判断该项是数组还是对象,建立相应的数组或者对象

如何判断数组和对象?

3.递归遍历该项

实现代码如下:

结果:

深拷贝后的结果
上一篇 下一篇

猜你喜欢

热点阅读