function extend(par,chil){
var chil=chil||{};
for(var keyin par)
{
if(par.hasOwnProperty(key))
{
chil[key]=par[key]
}
}
return chil
};
var obj1={
name:"lol",
age:5,
skills:[
"mysql",'node','php','ps'
]
};
var obj2={
say:"hello",
};
/*真正的深度复制*/
function deep(par,chil){
child=chil||{}
for(var keyin par)
{
if(par.hasOwnProperty(key))
{
if(typeof par[key]==="object")
{
chil[key]=(Object.prototype.toString.call(par[key])==="[object Array]")?[]:{};
deep(par[key],chil[key])
}
else
{
chil[key]=par[key]
}
}
};
return chil;
}
function extendDeep(parent, child) {
child = child || {};
for(var iin parent) {
if(parent.hasOwnProperty(i)) {
//检测当前属性是否为对象
if(typeof parent[i] ==="object") {
//如果当前属性为对象,还要检测它是否为数组
//这是因为数组的字面量表示和对象的字面量表示不同
//前者是[],而后者是{}
child[i] = (Object.prototype.toString.call(parent[i]) ==="[object Array]") ? [] : {};
//递归调用extend
extendDeep(parent[i], child[i]);
}else {
child[i] = parent[i];
}
}
}
return child;
}
网友评论