ES6中对象的新增方法:Object.assign()

概念:

  • Object.assign()方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)

语法:

  • Object.assign(target,source,source)
  • Object.assign方法的第一个参数是目标对象,后面的参数都是源对象

注意点:

  • 如果目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性

案例:

a.a 就是 var a 中的对象a ,刚开始的值是10,后面打印出来为什么是1呢?
解释:因为Object.assign(a, b, c) 中第一个参数是a。第一个参数a的意思代表a为目标对象,后面的b和c都是源对象。那么后面的源对象就会覆盖前面的值,所以到了后面a.a的值等于1.

 var a = { a: 10, b: 20, c: 30 }  //a是Object.assign中的第1个参数 所以是目标对象(target)
    var b = { a: 5, b: 10, c: 15 }   //b和c都是源对象
    var c = { a: 1, b: 30, c: 40, d: 50 }
    
    // 语法 Object.assign(target,source,source)
    var d = Object.assign(a, b, c) 
    
     a.a + b.b + c.c + d.d
    console.log(a.a)//1
    console.log(a.b)//30
    console.log(a.c)//40


    console.log(b.b)//10
    console.log(c.c)//40
    console.log(d.d)//50

    console.log(c.b)//30
    console.log(c.a)//1

如果Object.assign(a)中只有一个参数的时候 就会返回原来的值

 var a = { a: 10, b: 20, c: 30 }  //a是Object.assign中的第1个参数 所以是目标对象(target)
    var b = { a: 5, b: 10, c: 15 }   //b和c都是源对象
    var c = { a: 1, b: 30, c: 40, d: 50 }

    // 语法 Object.assign(target,source,source)
    var d = Object.assign(a) 
    console.log(d)//{a: 10, b: 20, c: 30}
image.png

如果该参数不是对象,则会先转成对象,然后返回

 var e = 2
    // 语法 Object.assign(target,source,source)
    var d = Object.assign(e) 
    console.log(d)//Number {2}

注意:Object.assign方法实行的是浅拷贝,而不是深拷贝

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1 基本用法 Object.assign方法用于对象的合并,将源对象( source )的所有可枚举属性,复制到目...
    Api调用师阅读 885评论 0 4
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,183评论 6 13
  • 1.属性的简洁表示法 允许直接写入变量和函数 上面代码表明,ES6 允许在对象之中,直接写变量。这时,属性名为变量...
    雨飞飞雨阅读 1,158评论 0 3
  • 属性的简洁表示法 ES6允许直接写入变量和函数,作为对象的属性和方法。 上面代码表明,ES6允许在对象之中,直接写...
    oWSQo阅读 525评论 0 0
  • 属性的简洁表示法 ES6允许直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。 上面代码表明,ES6允...
    呼呼哥阅读 2,947评论 0 2