• 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 对象
  • 相关阅读:
    Ocelot(一)- .Net Core开源网关
    Extensions for Vue
    Vue Study [2]: Vue Router
    Vue Study [1]: Vue Setup
    获取当月的第一天和最后一天示例
    常规正则验证表达式
    当需要向数据库插入空值时,sql语句的判断
    让 IE支持圆角的方法
    服务器上传图片案例
    validatebox相关验证
  • 原文地址:https://www.cnblogs.com/xm0328/p/14128046.html
Copyright © 2020-2023  润新知