js 写一个深度克隆的代码
//深度克隆对象。数组
function deepClone(target){
// 1.初始化变量,获得目标数据类型
let result,targetClass = getTargetClass(target);
//判断目标类型
if(targetClass === 'Object'){ //对象
result = {};
}else if(targetClass === 'Array'){
result = [];
}else{
return target;
}
// 遍历目标数据
for( let key in target){
// 获取每一项的值
let item = target[key];
// 判断每一项的数据类型
if(getTargetClass(item) === 'Object' || getTargetClass(item) === 'Array'){
// 无论是对象还是数组,都可以用result[key]取值,
result[key] = deepClone(item);
}else{
result[key] = item;
}
}
return result;
}
function getTargetClass(target){
return Object.prototype.toString.call(target).slice(8, -1)
}
console.log(deepClone([1,2,2,34,{'ss':2},'2']))
console.log(Object.prototype.toString.call(null))
需要注意的是,后面判断类型的函数的理解

浙公网安备 33010602011771号