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

瀏覽器相容性

另見