ES6遍歷物件

下一個發表於2019-02-17

遍歷物件

E S 6 一共有 5 種方法可以遍歷物件的屬性 。

  1. for … in

    for . . . in 迴圈遍歷物件自身的和繼承的可列舉屬性(不含 Symbol 屬性)。

  2. Object.keys(obj)

    Object . keys 返回 一個陣列,包括物件自身的(不含繼承的 )所有可列舉屬性(不含 Symbol 屬性)

  3. Object . getOwnPropertyNames(obj)

    Object . getOwnPropertyNames 返回 一個陣列,包含物件自身的所有屬性(不含 Symbol 屬性,但是包括不可列舉屬性)

  4. Object.getOwnPropertySymbols(obj)

    Object . getOwnPropertySymbols 返回 一個陣列,包含物件自身的所有 Symbo l 屬性 。
    
  5. Reflect .ownKeys(obj)

    Reflect . ownKeys 返回 一個陣列,包含物件自身 的所有屬性 , 不管屬性名是 Symbol 還 是字串 , 也不管是否可列舉 。

以上 5 種方法遍歷物件的屬性時都遵守同樣的屬性遍歷次序規則 。

  • 首先遍歷所有屬性名為數值的屬性 , 按照數字排序 。
  • 其次遍歷所有屬性名為字串的屬性,按照生成時間排序。
  • 最後遍歷所有屬性名為 Symbol 值的屬性 , 按照生成時間排序。

總結如下:

屬性型別 for … in Object.keys(obj) Object . getOwn-Property-Names(obj) Object.getOwn-Property-Symbols(obj) Reflect .ownKeys(obj)
原型鏈
Symbol
不可列舉
可列舉
普通

相關文章