3.对象的深浅拷贝

2018-01-06  本文已影响0人  谷子多

1、概念 : 

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

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


2、两种拷贝形式:

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

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

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


3、数组和对象的拷贝

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

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

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

      对象:



4、Object.assign()

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

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

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

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


上一篇 下一篇

猜你喜欢

热点阅读