您的位置:首页 > 其它

深度克隆

2017-12-20 22:53 239 查看
1.遍历对象 for(var prop in obj)

2.判断是不是原始值 typeof()

3.判断是数组还是对象 instanceof toString constructor

4.建立相应的数组或对象

5.递归

var obj = {
name : "abc",
age : 123,
card : ['visa','master'],
wife : {
name : "bcd",
son : {
name : "aaa"
}
}
}

function deepClone(origin,target){
var target = target || {},
toStr = Object.prototype.toString,
arrStr = "[object Array]";
for(var prop in origin){//遍历对象
if(origin.hasOwnProperty(prop)){//判断是不是原型链上的
if(origin[prop] !== "null" && typeof(origin[prop]) == 'object'){//判断是不是原始值
if(toStr.call(origin[prop]) == arrStr){//判断是对象还是数组
target[prop] = [];

}else{
target[prop] = {};
}
deepClone(origin[prop],target[prop]);//递归

}else{
target[prop] = origin[prop];//原始值
}
}
}
return target
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  深度克隆