JavaScript 中原型对象中 Iterator 原型怎么理解
iterator 原型是定义在 symbol.iterator 属性上的方法,用于让对象支持 for-of 循环。通过实现该方法并返回一个包含 next() 方法的迭代器对象,可以自定义遍历逻辑。例如为自定义数组类添加该属性后,即可直接使用 for-of 语法进行遍历。

如何手动实现一个简单的 Iterator 接口
手动实现 Iterator 需要创建一个包含 next() 方法的对象,该方法返回 { value: ..., done: false } 或 { done: true }。将 Symbol.iterator 指向一个返回该迭代器对象的函数,即可使实例可遍历。以下代码演示了如何实现一个从 0 到指定数字的计数器迭代器。

class Counter {
constructor(limit) {
this.limit = limit;
this.current = 0;
}
[Symbol.iterator]() {
const self = this;
return {
next() {
if (self.current < self.limit) {
return { value: self.current++, done: false };
}
return { done: true };
}
};
}
}
const counter = new Counter(3);
for (const num of counter) {
console.log(num); // 输出 0, 1, 2
}Iterator 协议中的 done 状态如何影响循环终止
当 next() 方法返回 { done: true } 时,for-of 循环会立即终止,不再执行后续代码。这是 Iterator 协议规定的标准行为,确保遍历在数据耗尽时安全退出。即使未显式调用 break,只要 done 为 true,循环就会结束。
立即学习“Java免费学习笔记(深入)”;


















