实现js深拷贝
概念
从堆内存中开辟一个新的区域存放对象,对对象中的子对象进行递归拷贝,拷贝前后的像个对象互不影响
let preson = {
name: '狗蛋',
hoboy: ['学习', ['看电影', '听音乐'], '玩']
};
function deepClone (obj) {
let cloneObj = new obj.constructor();
if (obj === null) return obj;
if (obj instanceof Date) return new Date(obj);
if (obj instanceof RegExp) return new RegExp(obj);
if (typeof obj !== 'object') return obj;
for (let item in obj) {
if (obj.hasOwnProperty(item)) {
cloneObj[item] = deepClone(obj[item]);
}
}
return cloneObj;
}
let preson1 = deepClone(preson);
preson1.name = '张三';
preson1.hoboy[0] = '打架';
console.log(preson1);
console.log( preson);
数据输出
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/0d1191eea488779a290ee65efb708830.png)
只为分享写代码过程中的一些心得体会,感谢平台!