iterator使用TypeScript 的描述:



interface Iterable {
[Symbol.iterator]() : Iterator,
}

interface Iterator {
next(value?: any) : IterationResult,
}

interface IterationResult {
value: any,
done: boolean,
}


一个数据结构只要具有​​Symbol.iterator​​属性,就可以认为是“可遍历的”(iterable)。

对于类似数组的对象(存在数值键名和​​length​​属性),部署 Iterator 接口,有一个简便方法,就是​​Symbol.iterator​​方法直接引用数组的 Iterator 接口。



NodeList.prototype[Symbol.iterator] = Array.prototype[Symbol.iterator];
// 或者
NodeList.prototype[Symbol.iterator] = [][Symbol.iterator];

[...document.querySelectorAll('div')] // 可以执行了


 


作者:孟繁贵