ES7
Object.keys(obj)
傳入一個對象,返回一個包含對象的可枚舉屬性和方法的名稱的、所有元素為字符串的數(shù)組。
ES6之后傳入的不是對象也可以強制轉(zhuǎn)換為對象,而在ES5中,如果傳入的不是對象會報錯:xx is not an object。
ES6中傳入的不是對象的具體返回值:
傳入字符串,返回索引值。
傳入數(shù)組,返回索引值。

構(gòu)造函數(shù),返回空數(shù)組或者屬性名
通俗而不嚴謹?shù)恼f,就是返回一個由對象的屬性名/方法名組成的數(shù)組。

注意:keys 方法僅返回可枚舉屬性和方法的名稱;若要返回可枚舉和不可枚舉屬性和方法的名稱,可以使用Object.getOwnPropertyNames()函數(shù)。
那么問題來了,學(xué)以致用嘛,當你想遍歷對象的所有值時,該怎么做?

誒意外發(fā)現(xiàn)了一種把對象轉(zhuǎn)換成數(shù)組的方法啊哈哈 ~
好了,這種方法看起來很好用,但是ES7已經(jīng)老了,讓我們試試看如果使用ES8如何操作:
ES8
Object.values()

這兩種方式得到的結(jié)果是一致的,也就是說Object.values()幫我們省去了遍歷key,并根據(jù)這些key獲取value的步驟,可以直接得到對象的鍵值組成的數(shù)組。
那么也就是這兩種方法,通俗而不嚴謹?shù)?,我們可以理解成,Object.keys()可以幫我們獲取對象鍵名組成的數(shù)組,Object.values()可以幫我們獲取對象鍵值組成的數(shù)組,真的超級方便了。
ES8還為我們提供了一種方法,用來返回一個給定對象自身可枚舉屬性的鍵值對的數(shù)組。
Object.entries()


也是超級貼心了~