3.对象的深浅拷贝

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的第一个。



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.属性的简洁表示法 允许直接写入变量和函数 上面代码表明,ES6 允许在对象之中,直接写变量。这时,属性名为变量...
    雨飞飞雨阅读 4,853评论 0 3
  • 三,字符串扩展 3.1 Unicode表示法 ES6 做出了改进,只要将码点放入大括号,就能正确解读该字符。有了这...
    eastbaby阅读 5,468评论 0 8
  • 属性的简洁表示法 ES6允许直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。 上面代码表明,ES6允...
    呼呼哥阅读 7,972评论 0 2
  • 本文为转载: 作者:zyydeveloper 链接:http://www.jianshu.com/p/5f776a...
    Buddha_like阅读 4,463评论 0 2
  • 麻雀不像燕子一样,天气冷了去南方,天气暖和了再回来,它不喜欢迁徙。麻雀是与人们作伴的好朋友 ,它常栖息于住宅处的枝...
    林下生风阅读 5,574评论 34 15

友情链接更多精彩内容