你的浏览器不支持canvas

Enjoy life!

ES6 - Iterator 和 for...of 循环

Date: Author: JM

本文章采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可。

以下内容全部源于: http://es6.ruanyifeng.com/#docs/iterator

一、Iterator(遍历器)的概念

1.1 Iterator由来

  • JavaScript 表示“集合”的数据结构:数组(Array)、对象(Object)、MapSet
    • 用户还可以组合使用它们,定义自己的数据结构。比如数组的成员是Map,Map的成员是对象。这样就需要一种统一的接口机制,来处理所有不同的数据结构。
  • 遍历器(Iterator)是一种接口,为各种不同的数据结构提供统一的访问机制。
  • 任何数据结构只要部署Iterator接口,就可以完成遍历操作(即依次处理该数据结构的所有成员)。

1.2 Iterator 的作用

  1. 为各种数据结构,提供一个统一的、简便的访问接口;
  2. 使得数据结构的成员能够按某种次序排列;
  3. ES6创造了一种新的遍历命令for...of循环,Iterator接口主要供for...of消费。

1.3 Iterator遍历过程

  • Iterator遍历过程如下:
    1. 创建一个指针对象,指向当前数据结构的起始位置。即:遍历器对象本质就是一个指针对象
    2. 第一次调用指针对象的next方法,可以将指针指向数据结构的第一个成员。
    3. 第二次调用指针对象的next方法,指针就指向数据结构的第二个成员。
    4. 不断调用指针对象的next方法,直到它指向数据结构的结束位置。
  • 每一次调用next方法,都会返回数据结构的当前成员的信息,即:返回一个包含valuedone两个属性的对象。
    • value属性:是当前成员的值
    • done属性:是一个布尔值,表示遍历是否结束。

下面是一个模拟next方法返回值的例子。

function makeIterator (arr) {
}


对于本文内容有问题或建议的小伙伴,欢迎在文章底部留言交流讨论。