一、Object.assign()對(duì)象的拷貝
Object.assign() 方法用于將所有可枚舉屬性的值從一個(gè)或多個(gè)源對(duì)象復(fù)制到目標(biāo)對(duì)象。它將返回目標(biāo)對(duì)象。
Object.assign(target, ...sources)
【target:目標(biāo)對(duì)象】,【souce:源對(duì)象(可多個(gè))】
舉個(gè)栗子:const object1 = {
a: 1,
b: 2,
c: 3
};
const object2 = Object.assign({c: 4, d: 5}, object1);
console.log(object2.c, object2.d);
console.log(object1)
// { a: 1, b: 2, c: 3 }
console.log(object2)
// { c: 3, d: 5, a: 1, b: 2 }
注意:1.如果目標(biāo)對(duì)象中的屬性具有相同的鍵,則屬性將被源對(duì)象中的屬性覆蓋。
后面的源對(duì)象的屬性將類似地覆蓋前面的源對(duì)象的屬性
2.Object.assign 方法只會(huì)拷貝源對(duì)象自身的并且可枚舉的屬性到目標(biāo)對(duì)象。該方法使用源對(duì)象的[[Get]]和目標(biāo)
對(duì)象的[[Set]],所以它會(huì)調(diào)用相關(guān) getter 和 setter。因此,它分配屬性,而不僅僅是復(fù)制或定義新的屬性。如
果合并源包含getter,這可能使其不適合將新屬性合并到原型中。為了將屬性定義(包括其可枚舉性)復(fù)制到
原型,應(yīng)使用Object.getOwnPropertyDescriptor()和Object.defineProperty() 。