美文网首页
ES6 Iterator和for...of 循环

ES6 Iterator和for...of 循环

作者: 萘小蒽 | 来源:发表于2019-07-08 17:49 被阅读0次

    Iterator概念

    JavaScript原有的表示“集合”的数据结构,主要是数组(Array)和对象(Object),es6又添加了MapSet 。这样就有了四种数据集合,而且我们还可以自由的组合使用它们,比如数组成员中有mapmap成员有对象。这样就需要一种统一接口机制来处理所有不同的数据结构。遍历器(Iterator)就是这样一种机制。他是一种接口,为各种不同的数据结构提供统一的访问机制。

    任何数据结构,只要部署了Iterator接口就可以完成遍历操作(即依次处理该数据结构的所有成员)

    Iterator 接口的作用

    1. 为各种数据结构提供一个统一的、渐变的访问接口;
    2. 使得数据结构的成员能够按某种测序排列;
    3. for...of(es6遍历命令)消费。
    1. 创建一个指针对象,指向当前位置的起始位置。也就是说,遍历器对象本质上就是一个指针对象
    2. 第一次调用指针对象的next方法,可以将指针指向数据结构的第一个成员
    3. 第二次调用指针对象的next方法,指针就指向数据结构的第二个成员
    4. 不断调用指针的next方法,直到它指向数据结构的结束位置

    Iterator接口模拟

    var it = makeIterator(['a', 'b']);
    
    it.next() // { value: "a", done: false }
    it.next() // { value: "b", done: false }
    it.next() // { value: undefined, done: true }
    
    function makeIterator(array) {
      var nextIndex = 0;
      return {
        next: function() {
          return nextIndex < array.length ?
            {value: array[nextIndex++], done: false} :
            {value: undefined, done: true};
        }
      };
    }
    

    相关文章

      网友评论

          本文标题:ES6 Iterator和for...of 循环

          本文链接:https://www.haomeiwen.com/subject/mljycctx.html