iterator(1)

主角是一组数据(以特定的数据结构组织)。

for...of循环  iterator接口

for...of只认识iterator,有它就能发挥作用。

对象具有属性。
属性的表面形式是:

属性名:属性值

有一个属性,其属性名为Symbol.iterator,而其值为一个函数。

这个函数就是“遍历器生成函数”。

执行此函数,就相当于在利用构造函数生成实例,而在此处,实例是遍历器。

老问题:构造函数说,我把对象搞出来了,谁要?就像是女娲创造了奥特曼的核心一样,谁要?

Symbol是什么?是一种数据类型,其具体实现可以说是一个实例对象。

Symbol.iterator和平时用的Array.isArray在形式上是一模一样的。说明iterator是一个方法或者属性。

Symbol.iterator一个预定义好的、类型为 Symbol 的特殊值,所以要放在方括号内。

 1 const obj = {
 2   [Symbol.iterator] : function () {
 3     return {
 4       next: function () {
 5         return {
 6           value: 1,
 7           done: true
 8         };
 9       }
10     };
11   }
12 };

Symbol.iterator()等同于遍历器构造函数被调用,返回了一个迭代器。

原文地址:https://www.cnblogs.com/flyover/p/14133510.html