为什么需要深拷贝

因为对象在内存中是在堆内存heap中存储,没法直接访问,只能通过地址指针来访问到。所以通常我们在拷贝对象时候只是拷贝了指针地址。当实际对象在内存中被别的变量改变了,相应的当前的数据也变了。所以需要深拷贝,单独开辟新的内存地址存放对象数据

实现1

1
const clone1 = obj => JSON.parse(JSON.stringify(obj));

转字符串再转到对象,字符串作为基本数据结构直接拷贝就行,会在内存中单独有新的栈内存地址。

缺点:

  1. 对function null undefined 一些内置类型在序列化时候也会丢失
  2. 没法处理循环引用。

实现2