Reflect.ownKeys返回对象自身所有属性键,包括字符串、Symbol及不可枚举属性,不包含继承属性,按数字索引升序、其他字符串添加顺序、Symbol添加顺序排列。

JavaScript 的 Reflect.ownKeys 方法返回一个对象自身的所有属性名组成的数组,包括:
包含的属性类型
该方法会返回对象自身拥有的所有键,不论其可枚举性、属性类型或是否为字符串/符号(Symbol)键。具体包括以下三类:
- 字符串命名的属性键:如 'name'、'age' 等普通属性名。
- Symbol 类型的属性键:通过 Symbol 创建的唯一键,例如 Symbol('id')。
- 不可枚举属性:即使属性设置了 enumerable: false,也会被包含在结果中。
不包含的属性
与 for...in 或 Object.keys() 不同,Reflect.ownKeys 不会访问原型链上的继承属性。它只关注对象自身的键。
- 不会包含从原型继承的任何属性,无论是否可枚举。
返回顺序规则
返回的键列表遵循特定排序规则:
立即学习“Java免费学习笔记(深入)”;
- 首先按类型分为两组:数字索引键(如 '0', '1')排在前面,按升序排列。
- 然后是其他字符串键,按添加顺序排列。
- 最后是 Symbol 键,也按添加顺序排列。
基本上就这些。Reflect.ownKeys 是获取对象完整自有键列表最全面的方法。










