Iterator
概念
遍历器(Iterator)就是这样一种机制。它是一种接口,为各种不同的数据结构提供统一的访问机制。任何数据结构只要部署 Iterator 接口,就可以完成遍历操作(即依次处理该数据结构的所有成员)。
遍历过程
Iterator 的遍历过程是这样的。
创建一个指针对象,指向当前数据结构的起始位置。也就是说,遍历器对象本质上,就是一个指针对象。
第一次调用指针对象的
next
方法,可以将指针指向数据结构的第一个成员。第二次调用指针对象的
next
方法,指针就指向数据结构的第二个成员。不断调用指针对象的
next
方法,直到它指向数据结构的结束位置。
每一次调用next
方法,都会返回数据结构的当前成员的信息。具体来说,就是返回一个包含value
和done
两个属性的对象。其中,value
属性是当前成员的值,done
属性是一个布尔值,表示遍历是否结束。
默认接口
一种数据结构只要部署了 Iterator 接口,我们就称这种数据结构是“可遍历的”(iterable)。一个数据结构只要具有Symbol.iterator
属性,就可以认为是“可遍历的”。
Symbol.iterator
属性本身是一个函数,就是当前数据结构默认的遍历器生成函数。
原型链有iterator属性
一个对象如果要具备可被for...of
循环调用的 Iterator 接口,就必须在Symbol.iterator
的属性上部署遍历器生成方法(原型链上的对象具有该方法也可)。
上面代码是一个类部署 Iterator 接口的写法。Symbol.iterator
属性对应一个函数,执行后返回当前对象的遍历器对象。
最后更新于