属性的遍历方法
ES6 一共有 5 种方法可以遍历对象的属性。
1. for...in
遍历对象自身的和继承的可枚举属性(不含 Symbol 属性)。
for (const key in obj) console.log(key);
2. Object.keys(obj)
返回一个数组,包含对象自身所有可枚举属性(不含 Symbol、不含原型链上的属性)。
3. Object.getOwnPropertyNames(obj)
返回一个数组,包含对象自身的所有属性名(含不可枚举,但不含 Symbol)。
4. Object.getOwnPropertySymbols(obj)
返回一个数组,包含对象自身的所有 Symbol 属性。
5. Reflect.ownKeys(obj)
返回一个数组,包含对象自身的所有属性键(含字符串 + Symbol,含不可枚举)。
遍历次序规则
上述遍历,都遵守同样的属性遍历次序规则:
- 先按升序遍历所有数值键(整数索引按数值大小排序)。
- 再按插入顺序遍历所有字符串键。
- 最后按插入顺序遍历所有 Symbol 键。
Reflect.ownKeys({ [Symbol()]:0, b:0, 10:0, 2:0, a:0 })
// ['2', '10', 'b', 'a', Symbol()]
来源整理自:vue3js.cn 面试官系列



