ES6中5种遍历对象属性的方法
5种遍历对象属性的方法:
for…in
for...in
循环遍历自身的和继承的可枚举属性(不含Symbol属性)Object.keys(obj)
Object.keys(obj)
返回一个数组,包括对象自身的(不含继承)所有可枚举属性(不含Symbol属性)Object.getOwnPropertyNames(obj)
Object.getOwnPropertyNames(obj)
返回一个数组,包括对象自身(不含继承)所有属性(包括不可枚举的属性,不含Symbol属性)Object.getOwnPropertySymbols(obj)
Object.getOwnPropertySymbols(obj)
返回一个数组,包括对象自身所有的Symbol属性Reflect.ownKeys(obj)
Reflect.ownKeys(obj)
返回一个数组,包含对象自身的所有属性,不管属性名是Symbol或字符串,也不管是否可枚举
###通过比较,可以得到结论:
- 要想获得对象自身和它所继承的属性(可枚举的),必须用
for...in
,其它只与对象自身有关。 Object.keys(obj)
返回自身的可枚举属性。Object.getOwnPropertyNames(obj)
比Object.keys(obj)
多包含了对象自身的不可枚举属性。Reflect.ownKeys(obj)
的返回结果是Object.getOwnPropertyNames(obj)
和Object.getOwnPropertySymbols(obj)
的合集。