ES6学习-Iterator和for...of循环

说明:本文参考阮一峰的ECMAScript 6 入门

1.Iterator(遍历器)的概念

JavaScript原有的表示‘集合’的数据结构,主要是数组和对象,ES6又添加了Set和Map。这样就有四种数据结构,这些数据结构还可以组合在一起,例如数组的成员是Map,Map的成员是对象。这就需要一个统一的接口机制,来处理所有不同的数据结构。

Iterator(遍历器)就是这样的一种机制。它是一种接口,为各种不同的数据结构提供统一的访问接口。任何数据结构只要部署Iterator接口,就可以完成遍历操作(即依次处理该数据结构的所有成员)。

Iterator的作用主要有三个:一是为各种数据结构提供统一的访问结构;二是能够按照某种次序为数据结构的成员进行排列;三是ES6创造一种新的遍历命令for…of循环。

原生具备 Iterator 接口的数据结构如下。

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

2.for…of循环

ES6 借鉴 C++、Java、C# 和 Python 语言,引入了for…of循环,作为遍历所有数据结构的统一的方法。

一个数据结构只要部署了Symbol.iterator属性,就被视为具有 iterator 接口,就可以用for…of循环遍历它的成员。也就是说,for…of循环内部调用的是数据结构的Symbol.iterator方法。

for…of循环可以使用的范围包括数组、Set 和 Map 结构、某些类似数组的对象(比如arguments对象、DOM、 NodeList 对象)、后文的 Generator 对象,以及字符串。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值