for in

for … in 循环遍历对象自身的和继承的可枚举属性(循环遍历对象自身的和继承的可枚举属性(不含Symbol属性),可以遍历到原型上的数据

Objet.keys

Object.keys()遍历 (返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含Symbol属性).),

不可以遍历到原型上的数据

Object.getOwnPropertyNames(obj)

返回一个数组,包含对象自身的所有属性(不含Symbol属性,但是包括不可枚举属性,也不包括原型上的属性)

Reflect.ownKeys(obj)

返回一个数组,包含对象自身的所有属性,不管属性名是Symbol或字符串,也不管是否可枚举,也不包括原型的

遍历对象的方法原型的属性不可枚举的属性Symbol类型的key
for inyesnono
Object.keysnonono
Object.getOwnPropertyNamesnoyesno
Reflect.ownKeysnoyesyes

ps:

看看这段ts报错的原因
keyof肯定是把不可枚举的也包括在内了 所以这个也会报错
https://www.typescriptlang.org/play?#code/GYVwdgxgLglg9mABAcwKZQAoCc4AcDOATADwAqiqAHlKmACb6IDyARgFarQB8AFHOwC5EpAJRCA1qgCecYMMQBvAFABILOhBYkrDtAB0kqfj7sRSgL5KgA

Last modification:February 21, 2022
If you think my article is useful to you, please feel free to appreciate