深拷贝与浅拷贝

浅拷贝:拷贝的对象改变时,被拷贝的对象也会随之改变。

一.以下几种方法可以实现改变拷贝对象,而被拷贝对象不变。

1.使用slice函数

var arrA = [“abc”,”def”.”ghi”];

var arrB =arrA.slice(0);//从0开始到结束

arrB[1] = “xyz”;

console.log(arrA);//abc def ghi

console.log(arrB);//abc xyz ghi

2.使用concat方法

var arrA = [“abc”,”def”.”ghi”];

var arrB = arrA.concat();

二.深拷贝

把对象的属性遍历赋给新对象

var deepCopy = function(source){

var newObj = {};

for(var key in source){

newObj[key] = typeof source[key] === ‘object’?deepCopy(source):source[key];

}

return newObj;

}

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注