屬性的簡潔表示法

如果在對象中定義方法,還可以這樣簡寫

屬性名表達式
在定義字面量對象時,ES6允許把表達式放在方括號中用作屬性名。

注意:屬性表達式和簡寫表示法不能同時使用,會報錯,但是可以把屬性表達式和對象內(nèi)方法定義簡寫結(jié)合起來。

方法的name屬性
對象中的方法也是函數(shù),也有name屬性,參看ES6函數(shù)擴展
對象屬性的遍歷
ES6 一共有 5 種方法可以遍歷對象的屬性。
(1)for...in
for...in循環(huán)遍歷對象自身的和繼承的可枚舉屬性(不含 Symbol 屬性)。
大多數(shù)時候,我們只關(guān)心對象自身的屬性。所以,盡量不要用for...in循環(huán),而用Object.keys()代替。
(2)Object.keys(obj)
Object.keys返回一個數(shù)組,包括對象自身的(不含繼承的)所有可枚舉屬性(不含 Symbol 屬性)的鍵名。
(3)Object.getOwnPropertyNames(obj)
Object.getOwnPropertyNames返回一個數(shù)組,包含對象自身的所有屬性(不含 Symbol 屬性,但是包括不可枚舉屬性)的鍵名。
(4)Object.getOwnPropertySymbols(obj)
Object.getOwnPropertySymbols返回一個數(shù)組,包含對象自身的所有 Symbol 屬性的鍵名。
(5)Reflect.ownKeys(obj)
Reflect.ownKeys返回一個數(shù)組,包含對象自身的所有鍵名,不管鍵名是 Symbol 或字符串,也不管是否可枚舉。
以上的 5 種方法遍歷對象的鍵名,都遵守同樣的屬性遍歷的次序規(guī)則。
首先遍歷所有數(shù)值鍵,按照數(shù)值升序排列。
其次遍歷所有字符串鍵,按照加入時間升序排列。
最后遍歷所有 Symbol 鍵,按照加入時間升序排列。
super關(guān)鍵字
我們知道,this關(guān)鍵字總是指向函數(shù)所在的當前對象,ES6 又新增了另一個類似的關(guān)鍵字super,指向當前對象的原型對象。
super關(guān)鍵字表示原型對象時,只能用在對象的方法的簡寫法之中,用在其他地方都會報錯。
對象的擴展運算符
擴展運算符(...)可用于數(shù)組,也可用于對象。
與解構(gòu)賦值結(jié)合

對象的擴展運算符等同于使用Object.assign()方法。

Object.is()
與嚴格比較運算符(===)的行為基本一致。

Object.assign()
Object.assign方法用于對象的合并,將源對象(source)的所有可枚舉屬性,復(fù)制到目標對象(target)。
Object.assign方法的第一個參數(shù)是目標對象,后面的參數(shù)都是源對象。

注意點
(1)淺拷貝
(2)同名屬性的替換
(3)數(shù)組的處理
Object.setPrototypeOf()和 Object.getPrototypeOf()
這是ES6官方推薦的設(shè)置和獲取原型的方法

Object.keys(),Object.values(),Object.entries()
分別用來用來遍歷ES6對象自身的鍵名、鍵值、鍵值對

Object.fromEntries()
很有用,但是node想要直接用好像不行,暫時先放著