const a = {
a:1,
b:{b:1},
c:[1,2,3],
d(){
console.log('d');
},
e:{
a:[1,2],
b:{bb:12},
c(){console.log('cc');
}
}
}
const deepClone = (value) => {
if(value instanceof Array){
const res = []
for (const item of value) {
res.push(deepClone(item))
}
return res
}else if(typeof value === 'function'){
return value
}
else if(value instanceof Object){
const res = {}
for (const key in value) {
res[key] =deepClone(value[key])
}
return res
}else{
return value
}
}
const b = deepClone(a)
console.log('res',b);
a.b.b = 2
console.log(b.b.b,a.b.b);
a.c.push('4')
console.log(b.c,a.c);
console.log(a.d);
a.e.a.push('3')
console.log(a.e.a,b.e.a);
a.e.b.c = 1
console.log(a.e.b,b.e.b);
手写深拷贝函数
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 浅拷贝和深拷贝 在某些状况下,类内成员变量需要动态开辟堆内存,如果实行位拷贝,也就是把对象里的值完全复制给另一个对...
- 拷贝构造函数是一种特殊的构造函数, 唯一的参数是本类型的一个引用变量。 构造函数名(const 构造函数名 & c...