GeneratorFunction

GeneratorFunction 构造器 生成新的 生成器函数 对象。在JavaScript中,生成器函数实际上都是 GeneratorFunction 的实例对象。

注意, GeneratorFunction 并不是一个全局对象。它可以通过下面的代码获取。

Object.getPrototypeOf(function*(){}).constructor

语法

new GeneratorFunction ([arg1[, arg2[, ...argN]],] functionBody)

参数

arg1, arg2,... arg N
函数使用的名称作为形式参数名称。每个必须是一个字符串,对应于一个有效的JavaScript标识符或这样的字符串的列表,用逗号分隔;如“ x ”,“ theValue ”或“ a,b ”。
functionBody
一个包含多条表示JavaScript函数体语句的字符串。

描述

当创建函数时,将使用 GeneratorFunction 构造函数创建的 function*表达式 声明生成器函数效率更低,并且在代码中调用它,因为这些函数与其余的代码一起被解析。

传递给函数的所有参数按照它们被传递的顺序被视为要创建的函数中参数的标识符的名称。

提示:使用 GeneratorFunction 构造函数创建的 eval 与生成函数表达式的代码不同。

GeneratorFunction 构造函数调用为函数(不使用 new 运算符)与将其作为构造函数调用的效果相同。

属性

GeneratorFunction.length
GeneratorFunction 构造函数的 length 属性值为 1。
GeneratorFunction.prototype
允许向所有生成器函数对象添加属性。

GeneratorFunction 原型对象

属性

GeneratorFunction.constructor
初始值是 GeneratorFunction .
GeneratorFunction.prototype.prototype
值是 %GeneratorPrototype% .

GeneratorFunction 实例

GeneratorFunction 实例从 GeneratorFunction.prototype 继承方法和属性。与所有构造函数一样,你可以更改构造函数的原型对象以对所有 GeneratorFunction 实例进行更改。

示例

GeneratorFunction 构造函数创建一个生成器函数

var GeneratorFunction = Object.getPrototypeOf(function*(){}).constructor
var g = new GeneratorFunction("a", "yield a * 2");
var iterator = g(10);
console.log(iterator.next().value); // 20