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