为什么需要深拷贝
因为对象在内存中是在堆内存heap中存储,没法直接访问,只能通过地址指针来访问到。所以通常我们在拷贝对象时候只是拷贝了指针地址。当实际对象在内存中被别的变量改变了,相应的当前的数据也变了。所以需要深拷贝,单独开辟新的内存地址存放对象数据
实现1
|
|
转字符串再转到对象,字符串作为基本数据结构直接拷贝就行,会在内存中单独有新的栈内存地址。
缺点:
- 对function null undefined 一些内置类型在序列化时候也会丢失
- 没法处理循环引用。
因为对象在内存中是在堆内存heap中存储,没法直接访问,只能通过地址指针来访问到。所以通常我们在拷贝对象时候只是拷贝了指针地址。当实际对象在内存中被别的变量改变了,相应的当前的数据也变了。所以需要深拷贝,单独开辟新的内存地址存放对象数据
|
|
转字符串再转到对象,字符串作为基本数据结构直接拷贝就行,会在内存中单独有新的栈内存地址。
缺点: