当前位置: 首页 > news >正文

青岛外贸建设网站制作收录优美图片官网

青岛外贸建设网站制作,收录优美图片官网,日主题wordpress破解版,做网站 要域名 主机 还有啥本文以 用 for of遍历 Object 为引 来聊聊 迭代器模式。 什么是迭代器模式 迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。 ——《设计模式:可复用面向对象软件的基础》 可以说迭代器模式就是为了遍历存在的。提…

本文以 用 for of遍历 Object 为引 来聊聊 迭代器模式

什么是迭代器模式

迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。 ——《设计模式:可复用面向对象软件的基础》

可以说迭代器模式就是为了遍历存在的。提到遍历,大家都对那些手段耳熟能详了,下面我们先简单列一下各种数据类型的遍历:

遍历数组

  1. for 循环
  2. forEach
  3. map
  4. reduce
  5. keys
  6. values
  7. for of
  8. ......

其中keys values for of 需要Iterator支持,后面会介绍Iterator

遍历 Map/Set

  1. keys
  2. entries
  3. forEach
  4. ......

遍历 Object

  1. for in
  2. Object.keys(obj)得到对象每个属性的数组, 然后使用数组的遍历方法遍历每个 key,就能获取 每个 key 对应的 value

Iterator 和 for of

Iterator是ES6提出的一个接口,为各种不同的数据结构提供统一的访问机制。任何数据结构只要部署 Iterator 接口,就可以完成遍历操作。

Iterator 的作用

  1. 为各种数据结构,提供一个统一的、简便的访问接口。
  2. ES6提出了新的遍历命令for...of循环,Iterator 接口主要供for...of消费。

Iterator 的遍历过程

既然数组是支持for...of循环的,那数组肯定部署了 Iterator 接口,我们通过它来看看Iterator 的遍历过程。

 

从图中我们能看出:

  1. Iterator 接口返回了一个有next方法的对象。
  2. 每调用一次 next,依次返回了数组中的项,直到它指向数据结构的结束位置。
  3. 返回的结果是一个对象,对象中包含了当前值value 和 当前是否结束done

用 for of 遍历 Object

回到标题中的问题,我们现在如何去让一个对象也可以用 for of 来遍历它呢? 

 

根据上面讲到的内容,需要给对象也部署 Iterator 接口(其实就是在Object.prototype上实现一个以Symbol.iterator为名的function,这个function返回一个有next方法的对象,每调用一次 next, 能够依次返回数组中的项,直到它指向数据结构的结束位置 )

function objectIterator() {const keys = Object.keys(this)let index = 0return {next: () => {const done = index >= keys.lengthconst value = done ? undefined : this[keys[index]]index++return {done,value}}}
}Object.prototype[Symbol.iterator] = objectIteratorconst obj = {key: '1',value: '2'
}for (const iterator of obj) {console.log(iterator)
}

 

大厂面试题分享 面试题库

前后端面试题库 (面试必备) 推荐:★★★★★

地址:前端面试题库  web前端面试题库 VS java后端面试题库大全

 

http://www.mmbaike.com/news/34552.html

相关文章:

  • 蒙阴网站建设新媒体seo指的是什么
  • 成都疫情防控最新消息广州seo学徒
  • 中国电子商务公司排名seo快速排名代理
  • 怎么找回网站哈尔滨新闻头条今日新闻
  • 自建网站做外贸网络营销的方式有哪些
  • 网站后台验证码不显示可以免费打广告的网站
  • 电商网站设计素材浏览器打开是2345网址导航
  • 廊坊哪里能够做网站优化新十条
  • 如何给网站加引导页网站友情链接怎么添加
  • 网站开发一个多少钱百度收录站长工具
  • 女生做网站推广推广普通话的宣传语
  • 什么软件做网站营销推广怎么做
  • it公司怎么在国外网站做宣传怎么做网站主页
  • 产品发布网站模板怎么卸载windows优化大师
  • 网站安全认证多少钱电商平台建设方案
  • 垫江集团网站建设电子商务主要学什么内容
  • 长春企业自助建站系统百度一下首页百度一下知道
  • 英文集团网站设计建设软文营销的特点有哪些
  • c2c网站名称企业文化培训
  • Wordpress 手机端滑动应用商店aso优化
  • 化妆品公司网站模板营销新闻
  • 查询域名是否做过网站企业全网推广
  • 请将已备案网站接入访问软文发布的平台与板块
  • 电力建设官方网站sem竞价专员
  • 没有有知道钓鱼网站在哪儿做谷歌浏览器2021最新版
  • wordpress集成收藏功能旺道seo软件技术
  • pc端网站优缺点怎么进行推广
  • 有哪些专门做减肥内容的网站杭州seo建站
  • wordpress国内网络优化公司哪家好
  • 天津电子商务网站建设sem和seo的关系