前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaScript第十八弹——ES6(7)Iterator

JavaScript第十八弹——ES6(7)Iterator

作者头像
萌兔IT
发布2019-07-25 17:11:06
2790
发布2019-07-25 17:11:06
举报
文章被收录于专栏:萌兔it萌兔it

Iterator

Hello小伙伴们,今天介绍的是Iterator,小伙伴们一定有些疑惑,为什么昨天说了一个Promise关于异步的,今天就跑这来了,因为我们明天要写Generator呀,Iterator可是它的基础呢,一定要仔细阅读哟~

>>>>

基本概念

要说Iterator是个啥,Iterator其实就是一种提供遍历接口的机制,所有的数据结构只要部署了Iterator,就能够进行遍历操作。所以它主要有三个作用:

1)为各种数据结构,提供一个统一的、简便的访问接口;

2)使得数据结构的成员能够按某种次序排列;

3)保证for…of的使用。

遍历过程:

(1)创建一个指针对象,指向当前数据结构的起始位置。也就是说,遍历器对象本质上,就是一个指针对象。

(2)第一次调用指针对象的next方法,可以将指针指向数据结构的第一个成员。

(3)第二次调用指针对象的next方法,指针就指向数据结构的第二个成员。

(4)不断调用指针对象的next方法,直到它指向数据结构的结束位置。

>>>>

默认接口

有一些数据结构需要设置才能够具有Iterator接口,一些数据结构原生就具备接口,下面就让我们看看到底是哪些结构具有呢???

Array、Map、Set、String、TypedArray、函数的 arguments 对象和NodeList 对象。

>>>>

调用场所

1)大部分对Iterator接口的调用需要for...of循环,比如在数组中:

for...of:

  • 调用可遍历对象的[Symbol.iterator]( )方法,得到一个iterator遍历器对象
  • 不断调用next( )方法,直到done==true,遍历结束。

2)解构赋值

3)扩展运算符

4)yield*:这个会在下一次与Generator一同详细讲

5)其他

for...of

Array.from()

Map(), Set(), WeakMap(), WeakSet()(比如new Map([['a',1],['b',2]]))

Promise.all()

Promise.race()

>>>>

对象方法

遍历器对象主要有三种方法:next(), return(), throw(),其中next是必须的,后两者是可选的

1)next():指针对象的next方法,用来移动指针。开始时,指针指向数组的开始位置。然后,每次调用next方法,指针就会指向数组的下一个成员。第一次调用,指向a;第二次调用,指向b。

2)return():如果for...of循环提前退出(通常是因为出错,或者有break语句),就会调用return方法。如果一个对象在完成遍历前,需要清理或释放资源,就可以部署return方法。

3)throw():主要配合Generator使用,我们也会在下一次一起分享~

好啦!今天的分享就到这里啦,不是兔妞偷懒哦,这篇文章虽然短,但是这可是后面的基石呢~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 萌兔it 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档