看了ES6的官方文檔,把常用到的一些對象的方法記錄一下,以便增加印象。
(1)for...in
for...in
循環遍歷對象自身的和繼承的可枚舉屬性(不含 Symbol 屬性)。
let obj = { 'code': 123, 'name': 'take', 'ccc': function(){} } for(let key in obj){ console.log(key + '--' + obj[key]) }
輸出結果:
(2)Object.keys(obj)
Object.keys
返回一個數組,包括對象自身的(不含繼承的)所有可枚舉屬性(不含 Symbol 屬性)的鍵名。
let obj = { 'code': 123, 'name': 'take', 'ccc': function(){} } console.log(Object.keys(obj))
輸出結果:
可對屬性值進行處理:
let obj = { 'code': 123, 'name': 'take', 'ccc': function(){} } Object.getOwnPropertyNames(obj).map(item => { console.log(obj[item]) })
輸出結果:
(3)Object.getOwnPropertyNames(obj)
Object.getOwnPropertyNames
返回一個數組,包含對象自身的所有屬性(不含 Symbol 屬性,但是包括不可枚舉屬性)的鍵名。
(4)Object.getOwnPropertySymbols(obj)
Object.getOwnPropertySymbols
返回一個數組,包含對象自身的所有 Symbol 屬性的鍵名。
(5)Reflect.ownKeys(obj)
Reflect.ownKeys
返回一個數組,包含對象自身的(不含繼承的)所有鍵名,不管鍵名是 Symbol 或字符串,也不管是否可枚舉。
以上的 5 種方法遍歷對象的鍵名,都遵守同樣的屬性遍歷的次序規則。
- 首先遍歷所有數值鍵,按照數值升序排列。
- 其次遍歷所有字符串鍵,按照加入時間升序排列。
- 最后遍歷所有 Symbol 鍵,按照加入時間升序排列。
(6)Object.values()
Object.values
方法返回一個數組,成員是參數對象自身的(不含繼承的)所有可遍歷(enumerable)屬性的鍵值。
let obj = { 'code': 123, 'name': 'take', 'ccc': function(){} } console.log(Object.values(obj))
輸出結果:
(7)Object.entries()
Object.entries()
方法返回一個數組,成員是參數對象自身的(不含繼承的)所有可遍歷(enumerable)屬性的鍵值對數組。
let obj = { 'code': 123, 'name': 'take', 'ccc': function(){} } console.log(Object.entries(obj))
輸出結果: