Object.assign()概述
Object.assign(target,...sources)
:用于将所有可枚举属性的值从一个或多个源对象分配到目标对象。它将返回目标对象。
- target:目标对象
- sources:原对象。
- 返回值:目标对象。
const target = {a:1,b:2};
const source = {b:4,c:5};
const returnTarget = Object.assign(target,source);
console.log(target); // { a: 1, b: 4, c: 5 }
console.log(returnTarget); // { a: 1, b: 4, c: 5 }
- 如果目标对象中的属性具有相同的键,则属性将被源对象中的属性覆盖。
- 后面的源对象的属性将类似地覆盖前面的源对象的属性。
备注: Object.assign 不会在那些source对象值为 null 或 undefined 的时候抛出错误。
- Object.assign 方法只会拷贝源对象自身的并且可枚举的属性到目标对象。
深拷贝
Object.assign()拷贝的是(可枚举)属性值。
假如源值是一个对象的引用,它仅仅会复制其引用值。
var obj1 = {
a: 1,
b: 2
}
var obj2 = Object.assign({}, obj1); // obj1赋值给一个空{}
obj2.a = 3;
console.log(obj1.a);// 1
console.log(obj2.a);// 3
对象的合并
const o1 = { a: 1 };
const o2 = { b: 2 };
const o3 = { c: 3 };
const obj = Object.assign(o1, o2, o3);
console.log(obj); // { a: 1, b: 2, c: 3 }
console.log(o1); // { a: 1, b: 2, c: 3 }, 注意目标对象自身也会改变。
//其实就是对象的拷贝,o1就是目标对象,
// 后面的是源对象,后面的属性等会拷贝到目标对象
合并具有相同属性的对象
const o1 = { a: 1, b: 1, c: 1 };
const o2 = { b: 2, c: 2 };
const o3 = { c: 3 };
const obj = Object.assign({}, o1, o2, o3);
console.log(obj); // { a: 1, b: 2, c: 3 }
// 1.属性被后续参数中具有相同属性的其他对象覆盖。
// 2.目标对象的属性与源对象的属性相同,源的会覆盖目标的属性
还需更新呐~~~