3.对象的深浅拷贝

1、概念 : 

    生成与原对象一模一样的对象。

    注意 :简单类型的赋值为赋值,复合类型的赋值为赋址。


2、两种拷贝形式:

    1.浅拷贝:只会复制对象的第一层数据

    2.深拷贝:不仅仅会复制第一层的数据,如果里面还有对象,会继续进行复制,直到复制到全是基本数据类型为止。

        思路:如果是简单类型,就直接赋值,如果是复合类型,就继续循环遍历。

3.对象的深浅拷贝_第1张图片

3、数组和对象的拷贝

         数组可以使用for循环拷贝数据给另一个对象;

        对象可以使用for...in...循环去拷贝数据给另一个对象;

        数组:复制一个数组。因为是复合类型,如果直接arr2 = arr1,如果arr2后面进行了push等操作,就会影响到原数组,因为指向的是同一个内存地址,所以可以用以下方式进行复制值操作

3.对象的深浅拷贝_第2张图片

      对象:

3.对象的深浅拷贝_第3张图片



4、Object.assign()

    和extend类似对象的拷贝,是浅拷贝,只复制一层。

    Object.assign(target, source1,source2,source3...) :右值赋给左值

    合并多个对象,用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)

    注意:看以下代码,arr1的对应的下标数组会覆盖arr2对应的下标,如果arr1只有一个,那么就只会覆盖arr2的第一个。

3.对象的深浅拷贝_第4张图片


3.对象的深浅拷贝_第5张图片

你可能感兴趣的:(3.对象的深浅拷贝)