擴充套件運算子 合併 物件

2021-09-07 18:22:28 字數 1408 閱讀 6877

擴充套件運算子(...)用於取出引數物件的所有可遍歷屬性,拷貝到當前物件之中。

let z = ;  

let n = ;

n //

這等同於使用object.assign方法。

let aclone = ;  

// 等同於

let aclone = object.assign({}, a);

擴充套件運算子可以用於合併兩個物件。

let ab = ;  

// 等同於

let ab = object.assign({}, a, b);

如果使用者自定義的屬性,放在擴充套件運算子後面,則擴充套件運算子內部的同名屬性會被覆蓋掉。

let awithoverrides = ;  

// 等同於

let awithoverrides = };

// 等同於

let x = 1, y = 2, awithoverrides = ;

// 等同於

let awithoverrides = object.assign({}, a, );

上面**中,a物件的x屬性和y屬性,拷貝到新物件後會被覆蓋掉。

這用來修改現有物件部分的部分屬性就很方便了。

let newversion = ;

上面**中,newversion物件自定義了name屬性,其他屬性全部複製自previousversion物件。

如果把自定義屬性放在擴充套件運算子前面,就變成了設定新物件的預設屬性值。

let awithdefaults = ;  

// 等同於

let awithdefaults = object.assign({}, , a);

// 等同於

let awithdefaults = object.assign(, a);

擴充套件運算子的引數物件之中,如果有取值函式get,這個函式是會執行的。

//  並不會丟擲錯誤,因為 x 屬性只是被定義,但沒執行  

let awithxgetter =

};

// 會丟擲錯誤,因為 x 屬性被執行了

let runtimeerror =

} }

如果擴充套件運算子的引數是null或undefined,這個兩個值會被忽略,不會報錯。

let emptyobject = ; //  不報錯

JS之展開運算子 合併運算子

把物件或者陣列裡面的東西直接開啟,一般多用於陣列裡面 陣列拼接 var arr1 4 5,6 var arr2 7 8,9 var arr3 1 2,3 arr1,arr2 console.log arr3 1,2,3,4,5,6,7,8,9 進行函式的引數傳遞 var res math.max a...

物件擴充套件運算子( )

當編寫乙個方法時,我們允許它傳入的引數是不確定的。這時候可以使用物件擴充套件運算子來作引數,看乙個簡單的列子 12 3456 78functionjspang arg jspang 1,2,3 這時我們看到控制台輸出了 1,2,3,undefined,這說明是可以傳入多個值,並且就算方法中引用多了也...

物件的擴充套件運算子

陣列的擴充套件 一章中,已經介紹過擴充套件運算子 const a,b 1,2,3 a 1 b 2,3 es2018 將這個運算子 引入了物件。解構賦值 物件的解構賦值用於從乙個物件取值,相當於將目標物件自身的所有可遍歷的 enumberable 但是尚未讀取的屬性,分配到指定的物件上面。let x ...