遍历对象属性的5种方法
ES6一共有五种方法可以遍历对象的属性
-
for…in
*for…in 循环遍历对象自己的和继承的可枚举属性(不含 Symbol 属性)。
-
Object.keys(obj)
-Object.keys() 返回一个数组,包括对象自身的(不含继承的)所有可以枚举属性(不含 Symbol 属性)。
- -
Object.getOwnPropertyNames(obj)
-Object.getOwnPropertyNames 返回一个数组,包含对象自身的所有属性(不含 Symbol 属性,但是包括不可枚举属性)
- -
Object.getOwnPropertySymbols(obj)
-Object.getOwnPropertySymbols 返回一个数组,包含自身的所有 Symbol 属性
- -
Reflect.ownKeys(obj)
-Reflect.ownKeys 返回一个数组,包含对象自身的所有属性,不管属性名是 Symbol 还是字符串,也不管是否可枚举。
-
- 总结
- 以上5中方法遍历对象的属性时都遵守同样的属性遍历次序规则
- 首先遍历所有属性名为数值的属性,按照数字排序
- 其次遍历所有属性名为字符串的属性,按照生成时间排序
- 最后遍历所有属性名为 Symbol 值的属性,按照生成时间排序。