上次突然来活儿,现在接着继续:
3.iterator
iterator迭代器是另外4个ES6常用特性的实现基础(解构赋值,剩余/扩展运算符,生成器,for of循环. 默认有iterator 的数据:
1. Array 2. set/map 3.string 4.typedArray(类数组) 5.arguments 对象 6 nodelist 对象
备注: 默认的对象 是没有iterator 属性的, 所以for of , ... 都不能用于对象上面.
4 .for of 和 for in
for of 只能遍历 带有iterator(迭代器)的数据结构, 就是上面列举的那6种
对象是没有的,无法使用for of 遍历 但是我们可以给对象添加iterator属性 和length 属性
给obj 添加iterator 给obj 添加iterator如果obj 的key值非数字 用for of 遍历出来的是undefine.
for in 在mdn 的定义是:以任意顺序遍历一个对象的可枚举属性。对于每个不同的属性,语句都会被执行。
所以for in 是不推荐使用在数组上的,因为是可枚举属性,所以可能将原型上的属性也遍历出来.在遍历的时用hasOwnProperty() 判断是否是自身属性.
网友评论