简介:迭代器(Iterator
)是一种接口(对象的一个属性方法),为各种不同的数据结构提供统一的访问机制,任何数据结构只要部署了(Iterator
)接口,就可以完成遍历操作。ES6提供了新的遍历命令 for of
遍历,有iterator
接口的数据结构可以使用,用来遍历键值。
拥有迭代器的数据结构
- Arrty--数组
- Argments--函数获取实参的变量
- Set--ES6新的数据结构,类似于数组,但是成员的值都是唯一的,没有重复的值
- Map--是一组键值对的结构,具有极快的查找速度
- String--字符串
- TypedArray--描述的是二进制缓存区一个类似数组的视图,也叫类型数组
- NodeList--是一种类数组对象,用于保存一组有序的节点
工作原理:
创建一个指针对象,指向当前数据结构的起始位置(第一个)
第一次调用对象的next
方法,指针指向数据结构的等于个成员,
第二次调用指向第二次调用指向第二个,以此类推
每次调用next
方法返回value
和done
值
注意:第五次调用next() 方法,超出数组的长度,为空指针,done属性为 true
迭代器的运用--自定义的遍历数据
需求 :创建一个对象,按照工作原理给对象部署迭代器,获取对象的数组的每一个值
部署(模拟)迭代器步骤:
添加 [Symbol.iterator]() 方法
返回一个对象,其内包含 next() 方法
目的:通过迭代器访问对象的数组,符合面向对象的编程思维