ECMAScript 的迭代器协议是一种定义对象如何与 for...of 循环和其他迭代结构(如 for...await...of)一起工作的标准。迭代器协议的核心是对象必须实现一个名为 next 的方法,该方法返回一个对象,该对象有两个属性:value 和 done。
value 属性表示迭代器的当前值。done 属性是一个布尔值,表示迭代器是否已经到达序列的末尾。如果 done 为 true,则 value 的值通常是 undefined。迭代器协议允许对象定义自己的迭代行为,使得它们可以与 JavaScript 的内置迭代结构无缝协作。
下面是一个简单的迭代器协议实现示例:
const myIterable = {
from: 1,
to: 5,
[Symbol.iterator]() {
let current = this.from;
const to = this.to;
return {
next() {
if (current <= to) {
return { value: current++, done: false };
} else {
return { done: true };
}
}
};
}
};
for (const value of myIterable) {
console.log(value); // 输出 1, 2, 3, 4, 5
}
在这个例子中,我们定义了一个名为 myIterable 的对象,它有一个 from 属性和一个 to 属性。我们还为这个对象定义了一个名为 [Symbol.iterator] 的方法,该方法返回一个迭代器对象。这个迭代器对象有一个 next 方法,它根据当前值生成序列中的下一个值,直到达到 to 属性指定的值。
通过实现迭代器协议,我们可以使自定义对象与 JavaScript 的内置迭代结构一起工作,从而简化了迭代操作。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。