实现js浅拷贝
概念
重新在堆中创建内存,拷贝前后对象的基本数据类型互不影响,但拷贝前后对象的引用数据类型因共享一块内存,会互相影响。let preson = {
name: '狗蛋',
hoboy: ['学习', ['看电影', '听音乐'], '玩']
};
function deepClone (obj) {
// 因为数据类型不确定,不能直接用 cloneObj = {} 或者 cloneObj = [];
let cloneObj = new obj.constructor();
for (let item in obj) {
// 判断是否有该属性
if (obj.hasOwnProperty(item)) {
cloneObj[item] = obj[item];
}
}
return cloneObj;
}
let preson1 = deepClone(preson);
preson1.name = '张三';
preson1.hoboy[0] = '打架';
console.log(preson1);
console.log( preson);