对象属性的遍历

ES6中总共有5种对象属性遍历的方法。

for…in
for...in循环遍历对象自身的和继承的可枚举属性(不含Symbol属性)。

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

Object.getOwnPropertyNames(obj)
Object.getWonPropertyNames返回一个数组,包含对象自身的所有属性(不含Symbol属性,但包括不可枚举属性)。

Object.getOwnPropertySymbols(obj)
Object.getOwnPropertySymbols返回一个数组,包含对象自身所有的Symbol属性。

Reflect.ownKeys(obj)
Reflect.ownKeys返回一个数组,包含对象自身的所有属性,不论属性名是Symbol或字符串,也不管不否可枚举。

上面的5种对象属性遍历的方法,都遵守相同的属性遍历次序规则。
- 首先,遍历所有属性名为数值的属性,按照数字排序;
- 其次,遍历所有属性名为字符串的属性,按照生成时间排序;
- 最后,遍历所有属性名为Symbol值的属性,按照生成时间排序。

Reflect.ownKeys({[Symbol()]: 0, b: 0, 10: 0, 2: 0, a: 0});
// ["2", "10", "b", "a", Symbol()]

上面代码中,Reflect.ownKeys方法返回一个数组,包含了参数对象的所有属性。这个数组的属性次序是:先是数值属性210,其次是字符串属性ba,最后是Symbol属性。

猜你喜欢

转载自www.cnblogs.com/pwindy/p/12660870.html
今日推荐