Object.assign()方法用于將所有可枚舉屬性的值從一個或多個源對象復制到目標對象鲁沥。它將返回目標象酒唉。
(這么官方阳啥,一定看不懂了吧,我們往下面看刷喜。)
Object.assign()
語法
Object.assign (target, source1,source2, source3, …);
參數(shù)
target目標對象
target目標對象
返回值
目標對象残制。
方法
1、Object.assign()第一個參數(shù)是目標對象掖疮,后面的都是源對象初茶。
const target = {a: 1};
const source1 = {b: 2};
const source2 = {c: 3};
Object.assign(target, source1, source2);
console.log(target)// {a:1, b:2, c:3}
2、如果發(fā)生的值是一個對象浊闪,Object.assign的處理方法是直接替換恼布,而不是添加。t
console.log(Object.assign(小陳同學))
//String {"小陳同學"} object
3搁宾、如果源對像與目標對象有相同的屬性名折汞,或源對象中有相同的屬性名,后面的會覆蓋前邊的值 盖腿。
const target = { a: 1, b: 2 };
const source = { b: 4, c: 5 };
const returnedTarget = Object.assign(target, source);
console.log(target);// Object { a: 1, b: 4, c: 5 }
console.log(returnedTarget);// Object { a: 1, b: 4, c: 5 }
4爽待、null和undefined 不能作為參數(shù)傳入,因為null和undefined 不能轉成Object
| 如果undefined和null不在首參數(shù)翩腐,就不會報錯
const target = {a: 1};
console.log(Object.is(Object.assign( target, undefined), target)); //true
console.log(Object.assign( target, null) === target); //true
用處
1鸟款、合并多個對象
const merge = (target, ...sources) => Object.assign(target, ...sources);
2、克隆對象
function clone(a) {
return Object.assign({}, a);
}
3茂卦、為對象添加方法
Object.assign(SomeClass.prototype, {
someMethod(a, b) {
},
anotherMethod() {
}
});?
4何什、為對象添加屬性
class Point {
constructor (a,b) {
Object.assign(this, {a,b})
}
}