JavaScript深克隆
2019-03-12 本文已影响0人
椰果粒
方法一:
function deepClone(origin, target){
// 防止没写被拷贝的对象
var target = target || {},
toStr = Object.prototype.toString,
arrStr = "[object Array]";
for(var i in origin){
// 不用遍历原型上的属性
if(origin[i] !== "null" && typeof origin[i] == "object"){
// 不是原始类型
if(typeof origin[i] == "object"){
// 如果是数组
if(toStr.call(origin[i]) == arrStr){
target[i] = [];
}else{ // 否则是对象
target[i] = {};
}
// 调用自身
deepClone(origin[i],target[i])
}else{ // 原始类型(除了null)
target[i] = origin[i];
}
}
}
return target;
}
方法二:
var obj2 = JSON.parse(JSON.stringify(obj));