js浅拷贝和深拷贝

首先,什么是深拷贝和浅拷贝呢?

js中Array,Object都会遇到拷贝的问题,但是这两者之间又不一样,下面分开来谈一下我的理解:

数组的浅拷贝就是直接赋值方式,如:

var arr = [2,4,['s','dd']];

var arr1 = arr;     

console.log(arr);  //[2,4,['s','dd']]

console.log(arr1); //[2,4,['s','dd']]

arr1[2][0] = 'aa';

console.log(arr[2][0]);//aa

console.log(arr1[2][0]);//aa

我修改了arr1数组中的元素,arr数组中的值也被改变了,这并不是我们想要的;数组是一个对象,属于引用类型,通过赋值的方式给arr1的是arr的引用地址,这样就导致arr和arr1引用的是同一个对象,就像下图这个样子,改变arr/arr1任何一个,arr和arr1都会改变,因为本来就是引用的同一个对象。

 

          

 

数组的深拷贝:

 

 

 

posted @ 2018-12-13 20:55  独孤之路  阅读(198)  评论(0)    收藏  举报