1.概述
Object.assign()将源对象(source)的所有属性复制到目标对象(target)中,返回值是被修改后的目标对象。该方法可用于合并对象。
2.语法
Object.assign(target,source)
1)参数
target——目标对象,接收源对象属性的对象。
source——源对象,含有将被合并的属性。
注意:Object.assign方法的第一个参数是目标对象,其余后面参数都是源对象。
2)返回值
返回被修改后的目标对象(target)。
3.案例使用
1、合并多个对象
const o1={a:1}; //目标对象
const o2={b:3}; //源对象
const o3={d:4}; //源对象
const obj=Object.assign(o1,o2,o3); //此例中o1是目标对象,o2,o3都是源对象
console.log(obj); //{ a: 1, b: 3, d: 4 }
console.log(o1); //{ a: 1, b: 3, d: 4 }
console.log(o2); //{ b: 3 }
console.log(o3); //{ d: 4 }
2、合并具有相同key的对象:
如果目标对象与源对象有同名属性,或多个源对象有同名属性(即相同的key),则后面的属性会覆盖前面的属性。
const o1={a:2,b:3,c:5};
const o2={b:4,c:6};
const o3={c:8};
const obj=Object.assign(o1,o2,o3);
console.log(obj); //{ a: 2, b: 4, c: 8 }
console.log(o1); //{ a: 2, b: 4, c: 8 }
3、复制:如果目标对象是空对象,Object.assign方法会复制源对象到目标对象中。
const o1={a:2,b:3,c:5};
const obj=Object.assign({},o1);
console.log(obj); //{ a: 2, b: 3, c: 5 }
console.log(o1); //{ a: 2, b: 3, c: 5 }