打赏

ES6 iterator 迭代器

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')] // 可以执行了

 

posted @ 2018-08-21 11:39  孟繁贵  阅读(286)  评论(0编辑  收藏  举报
TOP