侧边栏壁纸
  • 累计撰写 218 篇文章
  • 累计创建 59 个标签
  • 累计收到 5 条评论

生成器

barwe
2022-04-03 / 0 评论 / 0 点赞 / 1,128 阅读 / 556 字
温馨提示:
本文最后更新于 2022-04-04,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

生成器(Generator)对象不能通过对应的类实例化创建,它只能通过 生成器函数(Generator Function)创建。

生成器同时实现了 可迭代协议(Iterable Protocol)和 迭代器协议(Iterator Protocol)。

通过生成器函数构建生成器的一个例子:

const g = function* () {
  yield 1;
  yield 2;
}();

生成器对象的三个实例方法:

  • Generator.prototype.next() 迭代并获取一次值,返回一个对象,至少有 valuedone 这两个属性;
  • 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

0

评论区