Object.assign() 方法用于将所有可枚舉屬性的值從一個或多個源對象複制到目标對象。它将傳回目标對象。
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);
參數:
target: 目标對象
sources: 源對象
傳回值:
*目标對象
描述
如果目标對象中的屬性具有相同的鍵,則屬性将被源中的屬性覆寫。後來的源的屬性将類似地覆寫早先的屬性。
Object.assign 方法隻會拷貝源對象自身的并且可枚舉的屬性到目标對象。該方法使用源對象的[[Get]]和目标對象的[[Set]],是以它會調用相關 getter 和 setter。是以,它配置設定屬性,而不僅僅是複制或定義新的屬性。如果合并源包含getter,這可能使其不适合将新屬性合并到原型中。為了将屬性定義(包括其可枚舉性)複制到原型,應使用Object.getOwnPropertyDescriptor()和Object.defineProperty() 。
String類型和Symbol類型的屬性都會被拷貝。
在出現錯誤的情況下,例如,如果屬性不可寫,會引發TypeError,如果在引發錯誤之前添加了任何屬性,則可以更改target對象。
注意,Object.assign 不會跳過那些值為 [null] 或 [undefined]的源對象。