数据准备:
var o = { //基本数据类型 name:'hxj', //引用数据类型中的Object user:{ age:23, id:201 }, //引用数据类型中的Array friend:['zs','yy','f'], }
浅拷贝
function Copy(o,copyO) { var copyO = copyO || {}; for(var i in o){ copyO[i] = o[i]; } return copyO; }
测试:
var copy1 = Copy(o); copy1.name = 'zs'; copy1.friend.push('pp'); copy1.user[name] = 'user1'; console.log('o:',o); console.log('copyO:',copy1);
深拷贝
function deepCopy(o,copyO){
var copyO = copyO || {};
for(var i in o){
if(o[i] instanceof Array){
copyO[i] = [];
//如果属性是数组或对象,则递归他的属性,直到属性为基本类型
deepCopy(o[i],copyO[i]);
}else if(o[i] instanceof Object){
copyO[i] = {};
deepCopy(o[i],copyO[i]);
}else{
copyO[i] = o[i];
}
}
return copyO;
}
测试:
var copyO2 = deepCopy(o); copyO2.name = 'hh'; copyO2.friend.push('pp'); console.log('o:',o); console.log('copyO:',copyO2);