概念:
- 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}
如果该参数不是对象,则会先转成对象,然后返回
var e = 2
// 语法 Object.assign(target,source,source)
var d = Object.assign(e)
console.log(d)//Number {2}
注意:Object.assign方法实行的是浅拷贝,而不是深拷贝