JS数组和对象的深拷贝

来源:互联网 发布:淘宝哪家韩妆店最优惠 编辑:程序博客网 时间:2024/05/17 23:10

数组的浅拷贝:

var arr = [1,2,3];

var newArr = arr;

newArr[0] = 4;

console.log(arr + ‘##’ + newArr); //输出[4,2,3][4,2,3]

解释:这种方式实际上只是新数组对原数组的一个引用,更改数组元素会对原数组产生影响,称为浅拷贝

 

数组的深拷贝:

方法一:使用slice

var arr = [1,2,3];

var newArr = arr.slice(0);

 

方法二:使用concat

var arr = [1,2,3];

var newArr = arr.concat();

 

对象的深拷贝:

使用for in循环和递归函数

var deep = function(obj){

var result = {};

for(var key in obj){

result[key] = typeof obj[key] === ‘object’ ? deep(obj[key]) : obj[key];

}

return result;

}

0 0
原创粉丝点击