es 常用基础小节--(二)

上次突然来活儿,现在接着继续:

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种

array 在proto上面的iterator属性

对象是没有的,无法使用for of 遍历 但是我们可以给对象添加iterator属性 和length 属性

给obj 添加iterator
给obj 添加iterator

如果obj 的key值非数字 用for of 遍历出来的是undefine.

for in 在mdn 的定义是:以任意顺序遍历一个对象的可枚举属性。对于每个不同的属性,语句都会被执行。
所以for in 是不推荐使用在数组上的,因为是可枚举属性,所以可能将原型上的属性也遍历出来.在遍历的时用hasOwnProperty() 判断是否是自身属性.

你可能感兴趣的:(es 常用基础小节--(二))