一.什么是深拷贝和浅拷贝
- 浅拷贝:对内存地址的复制,让目标对象指针和源对象指向同一片内存空间。注意:当内存销毁的时候,只想对象的指针,必须重新定义,才能够使用
- 深拷贝:深拷贝是指,拷贝对象的具体内容,二内存地址是自主分配的,拷贝结束之后俩个对象虽然存的值是一样的,但是内存地址不一样,俩个对象页互相不影响,互不干涉
二.实现一个简单浅拷贝
1 | var a = 20 |
三.实现深拷贝
3.1 JSON.parse(JSON.stringify())
1 | var Person = { |
3.2自定义函数实现深拷贝
3.2.1 首先实现一个简单的浅拷贝 思路:创建一个新的对象,遍历需要克隆的对象,将需要克隆对象的属性依次添加到新对象上,返回。
1 | function clone(target) { |
3.2.2 对上面clone函数进行改造实现深拷贝
1 | function clone(target,map = new Map()) { |
2021-11-22 补充:
对深拷贝完善
1 | // 深拷贝 |