Object.keys究竟是个啥顺序

发布时间:2019-01-03 作者:一点通


Object.keys()方法会返回一个数组,由给定对象的自身可枚举属性组成。

Object.keys({name: "Tom", age: 20})

返回["name", "age"]

Object.keys({100: "Tom", 10: 20})

返回["10", "100"]

Object.keys({name: "Tom", '-10': 20})

返回["10", "name"]

Object.keys({name: "Tom", '0': 20})

返回["0", "name"]

Object.keys({name: "Tom", '0.3': 20})

返回["name", "0.3"]

我们可以察觉到上面的返回结果顺序有点不一样,但可以得出一个结论:如果key为正整数(不是小数且大于等于0),则会按照数字的从小到大的顺序排列,其它的则按照出现的顺序先后排列。其本质是调用了对象的内部方法OrdinaryOwnPropertyKeys,才有了这些排序规则。

ECMAScript 2017 中文文档