JavaScript5种遍历对象属性的方法比较

ES6中提供了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返回一个数组,包含对象自身的所有Symbol属性。
  5. Reflect.ownKeys(obj)
    Reflect.ownKeys返回一个数组,包含对象自身的所有属性,不管属性名是Symbol还是字符串,也不管是否可枚举。
遍历方法 是否遍历原型 是否遍历不可枚举 是否遍历Symbol属性
for...in
Object.keys(obj)
Object.getOwnPropertyNames(obj)
Object.getOwnPropertySymbols(obj)
Reflect.ownKeys(obj)

以上5种方法遍历对象的属性时遵循同样的属性遍历次序规则。

  • 首先遍历所有属性名为数值的属性,按照数字排序。
  • 其次遍历所有属性名为字符串的属性,按照生成时间排序。
  • 最后遍历所有属性名为Symbol值的属性,按照生成时间排序。
Reflect.ownKeys({ [Symbol()]:0, b:0, 10:0, 2:0, a:0})
// [ '2', '10', 'b', 'a', Symbol() ]

参考文献

《ES6标准入门》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.属性的简洁表示法 允许直接写入变量和函数 上面代码表明,ES6 允许在对象之中,直接写变量。这时,属性名为变量...
    雨飞飞雨阅读 1,228评论 0 3
  • 属性的简洁表示法 ES6允许直接写入变量和函数,作为对象的属性和方法。 上面代码表明,ES6允许在对象之中,直接写...
    oWSQo阅读 564评论 0 0
  • 属性的简洁表示法 属性名表达式 方法的 name 属性 Object.is() Object.assign() 属...
    Android_冯星阅读 367评论 0 0
  • 生态住宅是什么? 一个生态住宅的概念意味着住宅低能耗对环境的影响。 性能 建筑使用了大量的能源,所有的因素都考虑在...
    hellup19阅读 1,881评论 0 1
  • 教你如何用民宿塑造一个高级文艺婊 旅搜网(旅游网站大全)
    在水一方_31f1阅读 196评论 0 0

友情链接更多精彩内容