GeneratorFunction

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.

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 继承实例方法

规范

Specification
ECMAScript® 2025 Language Specification
# sec-generatorfunction-objects

浏览器兼容性

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
GeneratorFunction
GeneratorFunction() constructor

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

参见