解释
只要数据结构具有iterator 接口,就可以使用 for of 遍历它的成员。
for…of 循环可以使用的范围包括数组、Set 和 Map 结构、某些类似数组的对象(比如arguments对象、DOM NodeList 对象)、 Generator 对象,以及字符串。
假如让 for of 遍历一个对象,就会报以下错误,因为对象没有这个 iterator 接口
Uncaught TypeError: obj1 is not iterable
,说 obj1这个对象 不可迭代
当遍历的是数组时,可以正常遍历
打印对象和数组,发现数组里面有一个Symbol属性是对象没有的
下图是对象的原型结构
Iterator 的作用有三个:
- 一是为各种数据结构,提供一个统一的、简便的访问接口;
- 二是使得数据结构的成员能够按某种次序排列;
- 三是 ES6 创造了一种新的遍历命令for…of循环,Iterator 接口主要供 for…of 消费。