一、浅拷贝
1、浅拷贝:浅拷贝的只是拷贝第一层,拷贝的类型分二种,一种是基础数据类型,那么这样直接拷贝,且修改后不会影响另外一个。另外一种拷贝的是一个对象或者数组等,那只是拷贝它的引用(地址),意味着如果被被拷贝/拷贝对象修改了一个对象的属性或者数组中的值,那么会影响到另外一个对象,这种现象称为浅拷贝。
附代码
let obj = {
id :1,
name:'YZengXin',
msg:{
age:18
}
}
let o = {};
for (const key in obj) {
o[key] = obj[key];
}
2、深拷贝:拷贝多层,每一层的数据都拷贝,但是和浅拷贝不同,深拷贝拷贝多层对象不是拷贝一个引用,而是基本类型,也就是说改了其中一个属性不会影响到另外一个
function deepCopy(newObj,oldObj) { if(newObj == null){ newObj = {}; } for (const key in oldObj) { let item = oldObj[key]; if(item instanceof Array){ newObj[key] = {}; deepCopy(newObj[key],item); }else if(item instanceof Object){ newObj[key] = {}; deepCopy(newObj[key],item); }else{ newObj[key] = item; } } } deepCopy(o,obj);