ES6入門系列 ----- 對象的遍歷

工做中遍歷對象是屢見不鮮了,遍歷數組的方法五花八門, 然而不少小夥伴是否是和我以前同樣只會用for ...in....es6

來遍歷對象呢, 今天給你們介紹五種遍歷對象屬性的方法:數組

  • 1, 最經常使用的for  in   
  1. 它能夠便利對象自己及其繼承自原型上的可枚舉屬性,
  2. 過濾掉原型上的屬性能夠用hasOwnProperty(屬性名)來判斷是不是自己的屬性,
  3. 對象的每個屬性都有它的描述,能夠用Object.getOwnPropertyDescriptors(對象, 屬性名)來查看對象的某個屬性的描述,能夠知道其是不是可枚舉, 可寫,可配置
  • 2, Object.keys(obj)
  1. 是否是有點眼熟,和數組的keys方法很像, 返回一個數組
  2. 這個數組包含自身的全部可枚舉屬性,不包含原型鏈上的屬性以及Symbol屬性
  3. 這個數組是可迭代的,也就是部署了iterator接口,能夠用for...of遍歷
  • 3, Object.getOwnPropertyNames(obj)
  1. 返回一個數組
  2. 包含自身的全部屬性,包括不可枚舉的屬性,但不包括Symbol屬性
  • 4  Object.getOwnPropertySymbols(obj)
  1. 返回一個數組
  2. 包含自身的全部Symbol屬性
  • 5  Reflect.ownKeys(obj)
  1. 返回一個數組
  2. 通常不會用, 包含自身的全部屬性, 無論是否爲Symbol屬性, 也無論是否可枚舉

插播 :           Symbol   是 es6  新增的一種基本數據類型,  es5的基本數據有5種, 因此新增後有6種基本數據類型es5

       在Symbol出現以前,對象的屬性名只能爲字符串, 容易形成屬性名衝突, 而Symbol 是獨一無二的,對象

    因此用Symbol 做爲屬性名必定不會衝突。繼承

      格式    const s = Symbol()    , 切記前面不用加new,  由於new 操做符會返回一個對象,而Symbol是接口

    原始值。Symbol() === Symbol()   // false.ip

 

拓展題:        typeof   1234n   =   ?     原型鏈

相關文章
相關標籤/搜索