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...