Object.assign()
方法用于將所有可枚舉屬性的值從一個或多個源對象復(fù)制到目標對象。它將返回目標對象特笋。
JavaScript Demo: Object.assgin()
const object1 = {
a: 1,
b: 2,
c: 3
};
const object2 = Object.assign({c: 4, d: 5}, object1);
console.log(object2.c, object2.d);
// expected output: 3 5
語法
Object.assign(target, ...sources);
參數(shù):
- target: 目標對象
- sources: 源對象
返回值:
*目標對象
描述
如果目標對象中的屬性具有相同的鍵剃法,則屬性將被源中的屬性覆蓋咐低。后來的源的屬性將類似地覆蓋早先的屬性。
Object.assign
方法只會拷貝源對象自身的并且可枚舉的屬性到目標對象。該方法使用源對象的[[Get]]
和目標對象的[[Set]]
衔瓮,所以它會調(diào)用相關(guān) getter 和 setter。因此抖甘,它分配屬性热鞍,而不僅僅是復(fù)制或定義新的屬性。如果合并源包含getter,這可能使其不適合將新屬性合并到原型中薇宠。為了將屬性定義(包括其可枚舉性)復(fù)制到原型偷办,應(yīng)使用Object.getOwnPropertyDescriptor()
和Object.defineProperty()
。
String
類型和Symbol
類型的屬性都會被拷貝澄港。
在出現(xiàn)錯誤的情況下椒涯,例如,如果屬性不可寫回梧,會引發(fā)TypeError
废岂,如果在引發(fā)錯誤之前添加了任何屬性,則可以更改target
對象狱意。
注意湖苞,Object.assign
不會跳過那些值為 [null
] 或 [undefined
]的源對象。