实现iterator接口是for...of前提Array,Set,Map可以for...of遍历。通过打印他们的原型对象,可以看到他们的原型方法中有迭代器方法。通过调用iterator方法,可以猜到他的实现内部维护了一个数据指针。每调用一次next()方法,指针就会跟着移位一位,done属性用来判断数据是否遍历完毕。所有for...of可以遍历的数据类型都必须实现iterator的接口。该方法返回一个next()方法的对象,调用next()方法可以实现数据的遍历。使用迭代器模式实现对象的for...of方法constobj={store:[1,2,3,4],[Symbol.iterator]:function(){constself=this;让索引=0;return{next:function(){constresult={value:self.store[index],done:index>=self.store.length}index++;返回结果;}}}}for(letiofobj){console.日志(我)}
