深度克隆js方法
- 首先分析是原始值还是引用值,涉及到栈内存还是堆内存,不详细解释。
- 判断后,在进行复制达到克隆目的。
function deepClone (origin,target){
var target = target || {};
var toStr = Object.prototype.toString;
var 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;
}