ES6的迭代器和生成器的使用

68 阅读1分钟

它的定义:

迭代器是一个对象,它定义一个序列,并在终止时可能返回一个返回值。任何数据部署了iterato接口,就可以完成遍历操作。

  1. es6创建了一个新的遍历方for...of,主要就是提供接口消费的。

  2. 原生具备for...of遍历的有(也就是说有interato接口)

  3. 工作原理

  • 1.创建一个指针对象,指向当前的数据结构的起始位置 
  • 2.第一次调用对象的next方法,指向数据结构的第一个成员。 
  • 3.不断的调用next方法,指针不断向后移动,直到指向最后一个成员。 
  • 4.每一次调用,都返回一个value和done属性的对象

使用for...of

  const arr = ['张三', '李四', '王五']
    // 使用for...of
    for (let v of arr) {
      console.log(v);
    }
      console.log(arr);

打印数据的原型中可以看到数组带有一个私有的方法

    // 查看这个,注意后面的要用中括号,因为数据是Symbol定义一种方法,还需要用()
    let iterator = arr[Symbol.iterator]()
    console.log(iterator);

在这里我们就可以看到上面提的工作原理的第二点; 当我们使用next方法就可以指向数组第一项。

console.log(iterator.next());
console.log(iterator.next());
console.log(iterator.next());
console.log(iterator.next());
console.log(iterator.next());