for in
获取对象的键值,包括__proto__的键值, 不包括不可枚举,symbol
Object.keys()
获取对象所有可枚举的键值,不包括symbol,不可枚举,原型
Object.getOwnPropertyNames()
获取对象所有的键值,不包括symbol,原型
Object.getOwnPropertySymbols()
获取对象键值为symbol
Reflect.ownKeys()
获取对象键值,包括symbol,不可枚举,不包括原型
总结
Object.keys() = for in + Object.hasOwnProperty() Reflect.ownKeys() = Object.getOwnPropertyNames() + Object.getOwnPropertySymbols()