js object.assign作用是用於將所有可枚舉屬性的值從一個或多個源對象複製到目標對象,它將返回目標對象。
語法:Object.assign(target, ...sources)
參數:target: 目標對象
sources: 源對象
實例:
const one = {a: 1, b: 2}
const two = {c: '3', d: '4'}
var three = Object.assign({e: 5}, one, two)
打印結果:
three.a => 1
three.c => 3
three.e => 5
注意事項:
1. 如果目標對象中的屬性具有相同的鍵,則屬性將被源中的屬性覆蓋。後來的源的屬性將類似地覆蓋早先的屬性。(對應key的value更新)
2. Object.assign 方法只會拷貝源對象可枚舉的屬性到目標對象。
3. Object.assign 不會跳過那些值為 [null] 或 [undefined]的源對象。
4. 對於單層屬性,目標對象和源對象屬性值的更改不會相互影響
5. 對於深層屬性,即屬性的key作為引用指向另一個對象。目標拷貝的是源對象的引用,目標對象和源對象屬性值的更改會相互影響。
6. 目標對象等於返回對象,所有操作都是針對目標對象的即參數中的target對象
7. 繼承屬性和不可枚舉屬性是不能拷貝的