从ES6开始,JavaScript对象的属性的顺序变的可预测

原文信息: 查看原文查看原文

Property order is predictable in JavaScript objects since ES2015

- Stefan Judis

很多开发者可能都不会注意一个问题,你定义一个JavaScript对象的多个属性,这些属性显示的顺序是什么样的?可能你第一反应会觉得这个顺序是无法预测的,但其实EcmaScript标准里对这个有做说明(各个浏览器的实现可能会有差别),属性的排序取决于这个属性的类型和属性的值。

在标准里,从ES6开始,属性的顺序是基于一个特殊的规则的,除非特指按照时间排序。作者通过两个新方法Object.getOwnPropertyNames和Reflect.ownKeys来编写示例讲解这一属性排序规则。

  • 数字。当属性的类型时数字类型时,会按照数字的从大到小的顺序进行排序;
  • 字符串。当属性的类型是字符串时,会按照时间的先后顺序进行排序;
  • Symbol。当属性的类型是Symbol时,会按照时间的先后顺序进行排序。


分享于 2018-10-30

访问量 2562

预览图片