JS 基础:遍历对象
for..in 循环
- 返回的是所有
可枚举
的属性,包括实例
和原型
上的属性。 - 如果只需要获取对象的实例属性,可以联合使用
hasOwnProperty()
进行过滤(过滤后等价Object.keys()
)。 - 不建议用来遍历
数组
查阅 - 注意
for
中的闭包问题
Object.keys()
- 返回的
实例
里可枚举
的属性
的数组
,不包括原型
。 Object.values()
返回实例
里可枚举
的属性值
的数组
,不包括原型
。Object.entries()
返回实例
里可枚举
的键值对
的数组
,不包括原型
。
Object.getOwnPropertyNames()
- 返回的
实例
里所有
属性的数组,包括不可枚举属性,但不包括Symbol
(注:Symbol
可枚举),但不会获取原型上的属性。 Object.getOwnPropertySymbols()
返回自身的Symol
属性。
Reflect.ownKeys()
- 返回的
实例
里所有
属性的数组,包括不可枚举属性和Symbol
。但不会获取原型上的属性。 - 基本等于
Object.getOwnPropertySymbols
+Object.getOwnPropertyNames
题外话:for..of
- 适用范围:
iterable
(Array, Map, Set, arguments
等) - 返回迭代器
属性值
- 扩展运算符
(...)
内部使用for...of
循环