es6中的iterator
发布日期:2021-05-07 06:19:48 浏览次数:19 分类:技术文章

本文共 812 字,大约阅读时间需要 2 分钟。

前言

iterator意为遍历器,是一种接口,为各种不同的数据结构提供统一的访问机制。

使用场景

  • for … of 循环
  • 扩展运算符
  • 解构赋值

原生支持遍历的数据类型有:

  • 数组、类数组对象(HTMLCollection、NodeList)

  • 字符串

  • Set

  • Map

    object不支持遍历器

为Object类型添加遍历器

  • 为要遍历的对象添加Symbol.iterator方法
  • 方法返回一个具有next()方法的对象。
  • 每次遍历会访问next()方法{ value:someData,done:false }并取出key对应的数据。
  • 满足结束条件,next方法返回{ done:true }的对象。

代码过程:

Object.prototype[Symbol.iterator] = function(){         let self = this;     let keys = Object.keys(self);    let index = 0;    return {            next(){                if(index < keys.length){                    let currentKey = keys[index++]                return {                        value:{     [currentKey]:self[currentKey] },                    done:false                }            }else{                    return {                        done:true                }            }        }    }}
上一篇:洛谷1093 奖学金(排序)
下一篇:联合union的赋值机制

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月05日 16时19分37秒