主角是一组数据(以特定的数据结构组织)。
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()等同于遍历器构造函数被调用,返回了一个迭代器。