可迭代接口,使用迭代器模式实现对象for...of遍历
实现iterator接口就是for...of前提
Array,Set,Map都可以用for...of来遍历。
通过打印他们的原型对象,都可以看到他们的原型方法中都有iterator
方法
文章图片
通过调用其中的iterator
方法,
文章图片
可以猜测他的实现内部维护了一个数据指针,每次调用next()
方法,指针会后移一位,而done
属性用来判断数据是否被全部遍历完。
所有可以用for...of
遍历的数据类型内部都要实现iterator
的接口。这个方法要返回一个next()
方法的对象,调用next()
方法就可以实现对数据的遍历。
使用迭代器模式实现对象的for...of
方法
const obj = {
store: [1, 2, 3, 4],
[Symbol.iterator]: function () {
const self = this;
let index = 0;
return {
next: function () {
const result = {
value: self.store[index],
done: index >= self.store.length
}
index++;
return result;
}
}
}
}for (let i of obj) {
console.log(i)
}
【可迭代接口,使用迭代器模式实现对象for...of遍历】

文章图片
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 基于微信小程序带后端ssm接口小区物业管理平台设计
- 2020-04-07vue中Axios的封装和API接口的管理
- 2019-1-14
- 调取接口时报404错误(ID:16)
- CICC(脑机接口,科幻几近成真())
- 抑郁症(可怕吗?)
- 松软可口易消化,无需烤箱超简单,新手麻麻也能轻松成功~
- 你不可不知的真相系列之科学
- 关于自我为中心的一点感想