GeneratorFunction

Baseline 已广泛支持

此特性已非常成熟,可在多种设备和浏览器版本上使用。自 ⁨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 += val;
}

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

构造函数

GeneratorFunction()

创建一个新的 GeneratorFunction 对象。

实例属性

也从其父级 Function 继承实例属性。.

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

GeneratorFunction.prototype.constructor

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

GeneratorFunction.prototype.prototype

所有生成器函数共享相同的 prototype 属性,即 Generator.prototype。使用 function* 语法或 GeneratorFunction() 构造函数创建的每个生成器函数也都有自己的 prototype 属性,其原型是 GeneratorFunction.prototype.prototype。当调用生成器函数时,其 prototype 属性将成为返回的生成器对象的原型。

GeneratorFunction.prototype[Symbol.toStringTag]

[Symbol.toStringTag] 属性的初始值为字符串 "GeneratorFunction"。此属性用于 Object.prototype.toString()

这些属性是每个 GeneratorFunction 实例的自身属性。

prototype

当函数用作使用 new 运算符的构造函数时使用。它将成为新对象的原型。

实例方法

从其父级 Function 继承实例方法。.

规范

规范
ECMAScript® 2026 语言规范
# sec-generatorfunction-objects

浏览器兼容性

另见