zoukankan      html  css  js  c++  java
  • Iterator

    Iterator

    Iterator(遍历器、迭代器) 是一个对象,Iterator对象需要包含一个next方法,该方法返回一个对象,此对象有两个属性,一个value表示当前结果,一个done表示是否可以继续迭代

    let it = makeIterator();
    
    function makeIterator() {
      let nextIndex = 0;
      return {
        next: function() {
          return nextIndex < 5 ?
          {value: nextIndex++, done: false} :
          {value: undefined, done: true};
        }
      };
    }
    

    ES6 规定,如果数据结构的Symbol.iterator属性是一个方法,该方法返回Iterator对象,就可以认为此数据结构是“可遍历的”(iterable)

    interface Iterable {
      [Symbol.iterator]() : Iterator,
    }
    
    interface Iterator {
      next(value?: any) : IterationResult,
    }
    
    interface IterationResult {
      value: any,
      done: boolean,
    }
    

    实例:

    let obj = {
      [Symbol.iterator]:makeIterator
    }
    

    ES6中以下场合会默认调用 Iterator 接口(即Symbol.iterator方法),

    • for...of循环
    • 数组解构
    • 扩展运算符
    • yield*
    • 其他隐式调用的地方,例如 new Set(['a','b']),Promise.all()

    ES6中以下数据结构默认为可遍历对象,即默认部署了Symbol.iterator属性

    • Array
    • Map
    • Set
    • String
    • 函数的 arguments 对象
    • NodeList 对象
  • 相关阅读:
    ADB常用命令
    Java内部开发框架
    Android开发的十个建议
    通过浏览器访问网站的过程
    CDN的概念和解决的问题
    nginx实现range请求
    Nginx如何重新编译添加模块
    MP4文件在线播放首屏慢的问题
    Ubuntu下添加程序到应用程序
    一致性hash
  • 原文地址:https://www.cnblogs.com/xm0328/p/14128046.html
Copyright © 2011-2022 走看看