<script>
// 创建克隆函数,data为要克隆的数据,flag为判断是深度克隆还是浅度克隆,
function clone(data,flag){
// 判断数据是否为数组
if (Object.prototype.toString.call(data) === '[object Array]') {
var arr = []
// flag为true时,执行深度克隆
if (flag) {
for(var i = 0;i < data.length;i++){
arr.push(clone(data[i],true));
}
// flag为false时,执行浅度克隆
}else{
arr=data.slice()
}
return arr
// 判断数据是否为对象
}else if (Object.prototype.toString.call(data) === '[object Object') {
var obj = {}
// flag为true时,执行深度克隆
if (flag) {
for(var key in data){
obj[key] = clone(data[key],true)
}
// flag为false时,执行浅度克隆
}else{
var obj = {}
for(var key in data){
obj[key] = data[key]
}
}
return obj
// 既不是数组也不是对象则直接返回值
}else{
return data
}
}
data = [1,[1,2,3],2,3,4,{a:1,b:2,c:3}]
console.log(clone(data,true))
</script>