for in, Object.keys(),Object.getOwnPropertyNames()区别

268 阅读1分钟

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()