美文网首页
ES6中对象的新增方法:Object.assign()

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

作者: __鹿__ | 来源:发表于2019-07-11 12:37 被阅读0次

概念:

  • 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方法实行的是浅拷贝,而不是深拷贝

相关文章

网友评论

      本文标题:ES6中对象的新增方法:Object.assign()

      本文链接:https://www.haomeiwen.com/subject/qysrkctx.html