1、区别
deepClone | shallowClone |
在浅拷贝的基础上,深层遍历每个属性 | 只复制基本数据类型的值,值传递 |
对于引用类型,深拷贝之后,新、旧两个对象完全独立,各自保留一份内存空间 | 对于引用类型,浅拷贝之后,新、旧两个对象指向同一块内存空间,共享其中的数据 |
2、实现深拷贝
function deepClone(obj){
var res = obj.constructor === 'object' ? {} : [];
for(var i in obj){
if (typeof obj[i] === 'object') {//引用类型
res[i] = deepClone(obj[i]);
}else{
//基本数据类型
res[i] = obj[i];
}
}
return res;
}
var o1={
name:'cqr',
age:100
};
var o2 = deepClone(o1);
o2.name = 'zxj';
alert(o1.name);//cqr
alert(o2.name);//zxj