介绍
迭代器 iterator 是一种接口(对象的一个属性),为各种不同的数据结构提供统一的访问机制。任何数据结构只要部署 Iterator 接口,就可以完成遍历操作。
iterator 接口就是对象的一个属性,属性名
Symbol.iterator
属性值是一个函数。有了该属性就可以使用 for……of 遍历。ES6 创造了一种新的遍历命令 for……of 循环,Iterator 接口主要供 for……of 消费
原生具备 iterator 接口的数据(可用 for of 遍历)
- Array
- Arguments
- Set
- Map
- String
- TypeArray
- NodeList
演示 for……of
1
2
3
4let arr = ['梅西','苏亚雷斯','内马尔'];
for(let item of arr) {
console.log(item);
}
工作原理
- 创建一个指针对象,指向当前数据结构的起始位置。
- 第一次调用对象的 next 方法,指针自动指向数据结构的第一个成员。
- 接下来不断调用 next 方法,指针一直往后移动,直到指向最后一个成员。
- 每调用 next 方法返回一个包含 value 和 done 属性的对象。
自定义可迭代数据
1 | let aggre = { |