Iterator 和 for..of
chenpeng 2020-11-30 ES6基础
# 1.Iterator
Iterator 是一种接口,为各种不同的数据结构提供统一的访问机制,任何数据结构只要部署了 Iterator 接口,就可以完成遍历操作
原生具备 Iterator 接口的数据结构:
- Array
- Map
- Set
- String
- TypedArray
- arguments
- NodeList
Iterator 的作用:
- 为各种数据结构,提供一个统一的访问接口
- 使数据结构的成员能够按某种顺序排列
- ES6 创造了新的遍历命令 for...of,Iterator 主要供 for...of 消费
Iterator 的遍历过程:
- 创建一个指针对象,指向数据结构的起始位置(遍历器对象本质上是一个指针对象)
- 第一次调用指针对象的 next 方法,将指针指向数据结构的第一个成员
- 第二次调用指针对象的 next 方法,将指针指向数据结构的第二个成员
- 不断调用指针对象的 next 方法,直到指针指向数据结构的结束位置
Iterator 遍历器实现:
function makeIterator(array){
let index = 0;
return{
next(){
return index < array.length ?
{value: array[index++], done: false} : {value: undefined, done: true}
}
}
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 2.for...of
任何数据结构只要部署了 Iterator 接口,就可以使用 for...of 遍历它的成员