要让普通业务实体对象支持for...of循环,需定义[Symbol.iterator]方法并返回符合迭代器协议的对象;明确遍历目标(如属性值、内部数组等)后,在对象上实现该方法,返回含next()的迭代器。

要让普通业务实体对象支持 for...of 循环,关键是在该对象上定义 [Symbol.iterator] 方法,返回一个符合迭代器协议的对象(即有 next() 方法,且每次调用返回 { value, done } 形式的对象)。
明确迭代目标:你想遍历什么?
业务对象通常不是数组,没有天然顺序。先想清楚:是遍历它的属性名、属性值、某个内部数组字段,还是按某种业务逻辑生成的数据序列?例如:
- 用户对象
user = { id: 1, name: 'Alice', role: 'admin' }—— 可能想遍历可枚举属性值; - 订单对象
order.items是个数组 —— 可直接代理遍历items; - 分页结果对象
PageResult { list: [...], total: 100 }—— 可能只遍历list。
实现 [Symbol.iterator] 方法
在对象上设置 [Symbol.iterator] 属性,值为一个函数,该函数返回迭代器对象。最简可行示例:
next










