Iterator概念
JavaScript
原有的表示“集合”的数据结构,主要是数组(Array
)和对象(Object
),es6又添加了Map和Set 。这样就有了四种数据集合,而且我们还可以自由的组合使用它们,比如数组成员中有map
,map
成员有对象。这样就需要一种统一接口机制来处理所有不同的数据结构。遍历器(Iterator
)就是这样一种机制。他是一种接口,为各种不同的数据结构提供统一的访问机制。
任何数据结构,只要部署了
Iterator
接口就可以完成遍历操作(即依次处理该数据结构的所有成员)
Iterator 接口的作用
- 为各种数据结构提供一个统一的、渐变的访问接口;
- 使得数据结构的成员能够按某种测序排列;
- 供
for...of
(es6遍历命令
)消费。
- 创建一个指针对象,指向当前位置的起始位置。也就是说,遍历器对象本质上就是一个指针对象。
- 第一次调用指针对象的
next
方法,可以将指针指向数据结构的第一个成员。- 第二次调用指针对象的
next
方法,指针就指向数据结构的第二个成员。- 不断调用指针的
next
方法,直到它指向数据结构的结束位置。
Iterator接口模拟
var it = makeIterator(['a', 'b']);
it.next() // { value: "a", done: false }
it.next() // { value: "b", done: false }
it.next() // { value: undefined, done: true }
function makeIterator(array) {
var nextIndex = 0;
return {
next: function() {
return nextIndex < array.length ?
{value: array[nextIndex++], done: false} :
{value: undefined, done: true};
}
};
}
网友评论