深度克隆
实现数据拷贝后不影响原数据
function clone(data,flag){
//判断data是否是数组
if(Object.prototype.toString.call(data)==='[object Array]'){
var arr=[];
//如果是true则进行深克隆
if(flag){
for(var i=0;i<data.length;i++){
arr.push(clone(data[i],true));
}
//否则进行浅克隆
}else{
arr = data.slice()
}
return arr;
//判断是否为对象
}
else if(Object.prototype.toString.call(data)==='[object Object]'){
var obj={};
//如果是true则进行深克隆
if(flag){
for(var key in data){
obj[key]=clone(data[key],true);
}
//否则进行浅克隆
}else{
for(var key in data){
obj[key]=data[key];
}
}
return obj;
//既不是数组也不是对象直接返回值
}else{
return data;
}
}
var arr=[1,2,3,5,6];
console.log(clone(arr,true));
</script>