es6-iterator
2018-11-02 本文已影响0人
ahappyone
JS 中表示集合的数据结构:对象、数组、Map、Set。
iterator: 遍历器,为各种不同的数据结构提供统一的访问机制。任何数据结构,只要部署 iterator 接口就能进行遍历操作。
简单的数组遍历器函数:

一个数据结构只要具有Symbol.iterator属性,就可以认为是“可遍历的”(iterable)。
原生具备 Iterator 接口的数据结构如下。
Array、Map、Set、String、TypedArray、函数的 arguments 对象、NodeList 对象。
如调用数组的 Symbol.iterator:

给类似数组对象部署 iterator 接口:
NodeList.prototype[Symbol.iterator]=Array.prototype[Symbol.iterator]; // 或者NodeList.prototype[Symbol.iterator]=[][Symbol.iterator];
有了遍历器接口就可以用 for...of 遍历。
只要某个数据结构部署了 Iterator 接口,就可以对它使用扩展运算符,将其转为数组:let arr=[...iterable];
遍历器对象还可以有 throw 和 return 方法。