pwindy  
在完成任务的同时,还需要不断“复盘”,不论你多么的忙,都需要留下时间思考,可以思考哪些地方做的好,哪些地方我们可以改进,应该如何改进,注重总结才是王道

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属性。

posted on 2020-04-08 16:40  pwindy  阅读(458)  评论(0编辑  收藏  举报