递归
var a = {
name : '笑话',
age : 20,
arr : [1,2,3,4,5,1,66,6,2,76]
};
var b;
var deepCopy= function(source) {
var result={};
for (var key in source) {
//递归调用
result[key] = typeof source[key]==='object'? deepCopy(source[key]): source[key];
}
return result;
}
b=deepCopy(a);
deepCopy(obj){
let newObj = null
if(typeof obj ==='object'&&obj !== null){
newObj = obj instanceof Array?[]:{}
for(var i in obj){
newObj[i] = deepCopy(obj[i])
}
}else{
newObj = obj // 最终会走这一步
}
return newObj
}
let arr = [1,2,3,4]
let b = JSON.parse(JSON.stringify(arr))
这样就能得到一个新的数组,而且即便修改数据b的值,也不会对数据arr有任何影响
let arr = [1,2,3,4]
let b = arr.slice(0)
Object.assign():需注意的是目标对象只有一层的时候,是深拷贝;