文字说明:比如一个数组(array)浅度拷贝是当数组a变量成数组b的时候,b改变里面的数组数值的时候,a也随着改变,
深度拷贝是当当数组a变量成数组b的时候,b改变里面的数组数值的时候,a里面的数组数组不随着改变,
那么为什么浅度拷贝会改变a的数组值而深度拷贝则不会呢?
因为浅度拷贝指向的是同一个内存,而深度拷贝是增加了一个新的内存,所以不会影响到原来a的内存, 所 以就不会改变原来的值
例子:
浅度拷贝
var arr=["a","b","c","d","e"];
var Arr=arr;
Arr[1]='h';
console.log('arr:'+arr); //arr的下标1的‘b’也变成了‘h’ 结果是:arr:a,h,c,d,e
console.log("Arr:"+Arr);//结果是:Arr:a,h,c,d,e
深度拷贝
var arr=["a","b","c","d","e"];
var Arr=JSON.stringify(arr); //先转化为string字符串的类型
var Brr=JSON.parse(Arr);//在解析字符串的类型
Brr[1]='h'; //这样修改Brr中的数组的时候就不会影响到arr里面数组的值
console.log('arr:'+arr);//结果是arr:a,h,c,d,e
console.log("Arr:"+Brr);//结果是Arr:a,h,c,d,e