Object.assign()
阿新 • • 發佈:2021-06-18
const target = { a: 1, b: 2 }; const source = { b: 4, c: 5 }; const returnedTarget = Object.assign(target, source); console.log(target); // expected output: Object { a: 1, b: 4, c: 5 } console.log(returnedTarget); // expected output: Object { a: 1, b: 4, c: 5 }
語法
Object.assign(target, ...sources)
引數
target
- 目標物件。
sources
- 源物件。
返回值
目標物件。
描述
如果目標物件中的屬性具有相同的鍵,則屬性將被源物件中的屬性覆蓋。後面的源物件的屬性將類似地覆蓋前面的源物件的屬性。
Object.assign
方法只會拷貝源物件自身的並且可列舉的屬性到目標物件。該方法使用源物件的[[Get]]
和目標物件的[[Set]]
,所以它會呼叫相關 getter 和 setter。因此,它分配屬性,而不僅僅是複製或定義新的屬性。如果合併源包含getter,這可能使其不適合將新屬性合併到原型中。為了將屬性定義(包括其可列舉性)複製到原型,應使用Object.getOwnPropertyDescriptor()
和Object.defineProperty()
。
在出現錯誤的情況下,例如,如果屬性不可寫,會引發TypeError
,如果在引發錯誤之前添加了任何屬性,則可以更改target
物件。