问题:使用Object.Keys(obj)
获取到key值顺序被打乱了
let obj = {
1: "第一个选项",
2: "第二个选项",
0: "第三个选项",
}
Object.keys(obj); // [0, 1, 2]
// 理想状态是[1, 2, 0]
原因:调用内部方法[[OwnPropertyKeys]]
获取拥有的所有键的列表,这个方法规定了对象属性的列出顺序
1 先按照 数字上升的排序,枚举所有 整数属性。
2 再按 创建顺序 枚举其余的 字符串属性 。
3 最后按 创建顺序 枚举拥有的 Symbol 符号属性。
let obj = {
b: "第一个选项",
c: "第二个选项",
a: "第三个选项",
1: "第四个选项",
2: "第五个选项",
0: "第六个选项",
}
Object.keys(obj); // ['0', '1', '2', 'b', 'c', 'a']