参考:
http://blog.youkuaiyun.com/yisuowushinian/article/details/45544343
1.js对象浅拷贝
简单的赋值就是浅拷贝。因为对象和数组在赋值的时候都是引用传递。赋值的时候只是传递一个指针。浅拷贝很容易,但是很多时候我们需要原样的把数组或者对象复制一份,在修改值的时候,不改变初始对象的值。
看下面的实例代码:
var a = [1,2,3];
var b =a ;
var test = {name:’xiaohong’, age:15};
var c = test;
console.log(a);
console.log(b);
console.log(test);
console.log(‘——————-‘);
b[0] =5;
c.age = 16;
console.log(a);
console.log(b);
console.log(test);
console.log(c);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
结果如下:
这里写图片描述
2.js对象深拷贝
因为对象相对较为复杂,所以我们先来看对数组的深拷贝的问题。
数组的深拷贝
//深拷贝
var a = [1,2,3];
var deepArry = [];
/**
* @param 被复制数组
* @param 新数组
*/
function deepCopy(arry1, arry2){
for(var i = 0,l= arry1.length;i