Object.assign()
作用:合并多个对象。
用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。
现有对象A,对象B,如果要把A对象的属性的值复制到B上,可以使用Object.assign(B,A);
注:如果目标对象中的属性具有相同的键,则属性将被源对象中的属性覆盖。后面的源对象的属性将类似地覆盖前面的源对象的属性。
语法
Object.assign(target, ...sources)
- 参数:target:目标对象。sources:源对象。
- 返回值:目标对象
实例:合并多个对象。第一个参数表示目标对象,对象会被改变。第二个参数,第三个参数都表示源对象,不会被改变。
注:如果对象属性一样时,后面的会覆盖前面的属性值。
let obj1={a:1,b:2};
let obj2={b:3,c:4};
//将obj1,obj2的属性合并成一个新的对象
let obj3=Object.assign(obj1,obj2);
console.log(obj3);//{a: 1, b: 3, c: 4}
//注意obj1会被改变
console.log(obj1);//{a: 1, b: 3, c: 4}
//obj2的值不会被改变
console.log(obj2);//{b: 3, c: 4}
复制对象,不改变源对象,第一个参数可以为一个空{}
let obj1={a:1,b:2};
let obj2=Object.assign({},obj1);
console.log(obj2)
实例
var a={name:'lisa',age:12};
var b={adress:'北京'};
Object.assign(b,a);
//此刻b的值为{adress: "北京", name: "lisa", age: 12}
//a的值不变{name: "lisa", age: 12}
上述例子中,对象b要复制对象a的属性值。
实例2:
var a={name:'lisa',age:12};
var b={name:'jack',adress:'北京'};
Object.assign(b,a);
//b的结果{name: "lisa", adress: "北京", age: 12}
//a的结果{name: "lisa", age: 12}
上述例子中我们发现,a和b都有属性name,使用Object.assign()后,源对象的属性值会覆盖目标对象的属性值。
例子3,复制一个对象
var a={name:'lili'};
var b=Object.assign({},a);
console.log(b);//{name: "lili"}
例子4,合并一个对象
var a={name:'lili'};
var b={age:12};
var c={address:'北京'};
var d=Object.assign({},a,b,c);
console.log(d);//{name: "lili", age: 12, address: "北京"}