数据准备:
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);