生成器(Generator)对象不能通过对应的类实例化创建,它只能通过 生成器函数(Generator Function)创建。
生成器同时实现了 可迭代协议(Iterable Protocol)和 迭代器协议(Iterator Protocol)。
通过生成器函数构建生成器的一个例子:
const g = function* () {
yield 1;
yield 2;
}();
生成器对象的三个实例方法:
Generator.prototype.next()
迭代并获取一次值,返回一个对象,至少有value
和done
这两个属性;Generator.prototype.return()
立即结束迭代并返回迭代完成时的值,默认是{value: undefined, done: true}
;Generator.prototype.throw()
立即结束迭代并抛出异常,除非迭代器内部捕获了异常。
总而言之,生成器既是 可迭代对象,又是一个 迭代器。
可迭代对象 & 迭代器参考 👉 https://barwe.cc/2022/04/03/js-iterable-iterator
👉 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator
评论区