Iterator
Iterator 概念
Iterator 是一种接口,为各种不同的数据结构提供统一的访问机制。任何数据结构,只要部署 Iterator 接口,就可以完成遍历操作。
Iterator 的主要作用:为数据结构提供统一的、简便的访问接口;使得数据结构的成员能够按照某种次序排列;供 for…of 消费。
遍历过程如下:
- 创建一个指针对象,指向当前数据结构的起始位置。
- 第一次调用指针对象的 next 方法,将指针指向数据结构的第一个成员。
- 第二次调用 next 方法,指向第二个成员。
- 不断调用 next 方法,直到指针指向数据结构的结束位置。
每次调用 next 方法都会返回数据结构当前成员的信息,返回一个包含 value 的 done 两个属性的对象。value 属性是当前成员的值,done 属性是一个布尔值,表示遍历是否结束。
模拟 next 方法返回值:
1 | var it = makeIterator(['a', 'b']) |
遍历器与所遍历的数据结构实际上是分开的,完全可以写出没有对应数据结构的遍历器对象,或者用遍历器对象模拟出数据结构。无限运行的遍历器对象的例子:
1 | var it = idMaker() |