JavaScript ES6 Iterator 迭代器

核心概念:

  1. 迭代器是一个统一的接口,作用是使各种数据结构可被便捷的访问
  2. 是 Symbol.iterator 下的方法实现。提供这种接口的有 Array、String、arguments、Map、Set、Dom 元素(正在进行中)。可以被 for...of 遍历
  3. Array 下有 Symbol 属性,所以arr[Symbol.iterator]()调用,返回 Iterator 对象
  4. iterator 对象下 next 方法单次调用方法{value: '本次遍历的值', done: 是否遍历结束,返回 true/false }
1const items = ["zero", "one", "two"];
2const it = items[Symbol.iterator]();
3it.next(); // {value: "zero", done: false}
4it.next(); // {value: "one", done: false}
5it.next(); // {value: "two", done: false}
6it.next(); // {value: undefined, done: true}
7
8// 正常运行
9for (let item of Array.from({...})) {
10 console.log(item);
11}
12// 部署一个Iterator接口
13obj[Symbol.iterator] = function(){
14  // ...
15}