此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in English Always switch to English

GeneratorFunction

基线 广泛可用

自 2016年9月 起,此特性已在主流浏览器中得到支持,可在大多数设备和浏览器版本中正常使用。

GeneratorFunction 对象为生成器函数提供了方法。在 JavaScript 中,每个生成器函数实际上都是一个 GeneratorFunction 对象。

请注意,GeneratorFunction 不是全局对象。可以通过以下代码来获取它:

js
const GeneratorFunction = function* () {}.constructor;

GeneratorFunctionFunction 的子类。

尝试一下

const GeneratorFunction = function* () {}.constructor;

const foo = new GeneratorFunction(`
  yield 'a';
  yield 'b';
  yield 'c';
`);

let str = "";
for (const val of foo()) {
  str = str + val;
}

console.log(str);
// Expected output: "abc"

构造函数

GeneratorFunction()

创建一个新的 GeneratorFunction 对象。

实例属性

也从其父类 Function 继承实例属性

这些属性定义于 GeneratorFunction.prototype 并由所有 GeneratorFunction 实例所共享。

GeneratorFunction.prototype.constructor

创建实例对象的构造函数。对于 GeneratorFunction 实例,其初始值是 GeneratorFunction 构造函数。

GeneratorFunction.prototype.prototype

所有生成器函数共享同一个 prototype 属性,即 Generator.prototype。每个生成器函数实例也有自己的 prototype 属性。当生成器函数被调用时,返回的生成器对象从生成器函数继承 prototype 属性,而该属性���继承自 GeneratorFunction.prototype.prototype

GeneratorFunction.prototype[Symbol.toStringTag]

[Symbol.toStringTag] 属性的初始值是字符串 "GeneratorFunction"。该属性被 Object.prototype.toString() 使用。

实例方法

从其父类 Function 继承实例方法

规范

规范
ECMAScript® 2027 Language Specification
# sec-generatorfunction-objects

浏览器兼容性

参见