//对象的深层 拷贝
function deepCopy(src,dist){
dist = dist || {};
for(var i in src){
if(typeof src[i] == 'object'){
//这里一定要初始化对象,不然传递null进去,没有对象指针,
//无法将生成的对象赋值到dist[i]上
dist[i] = (src[i].constructor === Array)?[]:{};
//递归执行,dist[i] 已经赋初始值
deepCopy(src[i],dist[i]);
}else{
dist[i] = src[i];
}
}
return dist;
}
var demo = {
name : "zhangsan",
age : 12,
prefer: ["吃饭","睡觉","喝水"],
state:{
location:"南京",
cn:"中国"
}
}
//传递一个 {} 和 (null,undefined)效果是不一样的,
//传递的是null没有对象指针,执行深拷贝后dist没有赋值。
var dist = {};
var xx = deepCopy(demo,dist);