深度克隆就是为了解决浅度克隆的问题,深度克隆后的对象不会影响到被克隆对象的属性,与被克隆对象完全独立。
浅克隆:
深克隆:
function getType(target){
return Object.prototype.toString.call(target).slice(8, -1);
}
function clone(target){
var res;
var targetType = getType(target);
if(targetType == "Object"){
res = {};
} else if(targetType == "Array"){
res = [];
} else {
return target;
}
for(var i in target){
let value = target[i];
if(getType(value) == "Array" || getType(value) == "Object"){
res[i] = clone(value);
} else {
res[i] = value;
}
}
return res;
}