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:
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使用,我们也会在下一次一起分享~
好啦!今天的分享就到这里啦,不是兔妞偷懒哦,这篇文章虽然短,但是这可是后面的基石呢~