Iterator
Iterator
Iterator(遍历器、迭代器) 是一个对象,Iterator对象需要包含一个next方法,该方法返回一个对象,此对象有两个属性,一个value表示当前结果,一个done表示是否可以继续迭代
let it = makeIterator();
function makeIterator() {
let nextIndex = 0;
return {
next: function() {
return nextIndex < 5 ?
{value: nextIndex++, done: false} :
{value: undefined, done: true};
}
};
}
ES6 规定,如果数据结构的Symbol.iterator属性是一个方法,该方法返回Iterator对象,就可以认为此数据结构是“可遍历的”(iterable)
interface Iterable {
[Symbol.iterator]() : Iterator,
}
interface Iterator {
next(value?: any) : IterationResult,
}
interface IterationResult {
value: any,
done: boolean,
}
实例:
let obj = {
[Symbol.iterator]:makeIterator
}
ES6中以下场合会默认调用 Iterator 接口(即Symbol.iterator方法),
for...of循环- 数组解构
- 扩展运算符
yield*- 其他隐式调用的地方,例如
new Set(['a','b']),Promise.all()等
ES6中以下数据结构默认为可遍历对象,即默认部署了Symbol.iterator属性
- Array
- Map
- Set
- String
- 函数的 arguments 对象
- NodeList 对象

浙公网安备 33010602011771号