递归实现一个可选clone方法关于深度克隆与浅度克隆
/*
* @实现 数组深度与浅度克隆
*/
function clone(obj,deep){
//判断传进来的obj为数组、对象、还是属于基本类型的值
if(Array.isArray(obj)){
//判断是否要进行深度克隆
if(deep){
var newArr = [];
// 通过递归数组将数据添加到newArr并返回
for(let i = 0;i<obj.length;i++){
newArr.push(clone(obj[i],deep))
}
// 递归结束返回结果
return newArr;
}else{
return obj.slice();
}
}else if(typeof(obj)=='object'){
var newObj={};
for (var prop in obj){
if(deep){
newObj[prop] = clone(obj[prop],deep)
}else{
newObj[prop] = obj[prop]
}
}
// 递归结束返回结果
return newObj
}else{
return obj
}
}