
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 } } } }}
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月05日 16时19分37秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
JavaScript上传下载文件
2019-03-05
QWaitCondition把异步调用封装成同步调用
2019-03-05
windows驱动开发-编译错误集合
2019-03-05
嵌入式linux系统应用开发
2019-03-05
Linux驱动开发之PCIe Host驱动
2019-03-05
Vue.js Element Basic组件使用
2019-03-05
android MVP模式
2019-03-05
基本vi命令使用
2019-03-05
android 头像选择,裁剪全套解决方案,你值得拥有!
2019-03-05
MapReduce
2019-03-05
springboot swagger2
2019-03-05
shell(十)case的几个典型应用
2019-03-05
Linux环境变量配置错误导致命令不能使用(杂谈)
2019-03-05
openstack安装(六)镜像glance服务安装
2019-03-05
openstack安装(九)网络服务的安装--控制节点
2019-03-05
shell编程(六)语言编码规范之(变量)
2019-03-05
linux杂谈之特殊字符的打印和在各种软件如何打出
2019-03-05
vim杂谈(三)之配色方案
2019-03-05
vim杂谈(五)之vim不加载~/.vimrc
2019-03-05
Linux杂谈之终端快捷键
2019-03-05