GeneratorFunction
构造器生成新的生成器函数
对象。在JavaScript中,生成器函数实际上都是GeneratorFunction
的实例对象。
注意,GeneratorFunction
并不是一个全局对象。它可以通过下面的代码获取。
Object.getPrototypeOf(function*(){}).constructor
语法
new GeneratorFunction ([arg1[, arg2[, ...argN]],] functionBody)
参数
-
arg1, arg2, ... argN
-
函数使用的名称作为形式参数名称。每个必须是一个字符串,对应于一个有效的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
规范
Specification | Status | Comment |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) GeneratorFunction |
Standard | Initial definition. |
ECMAScript Latest Draft (ECMA-262) GeneratorFunction |
Draft |
浏览器兼容
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out
https://github.com/mdn/browser-compat-data and send us a pull request.
Update compatibility data on GitHub
Desktop | Mobile | Server | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
GeneratorFunction |
Chrome Full support 39 | Edge Full support 13 | Firefox Full support 26 | IE No support No | Opera Full support 26 | Safari ? | WebView Android Full support 39 | Chrome Android Full support 39 | Firefox Android Full support 26 | Opera Android Full support 26 | Safari iOS ? | Samsung Internet Android Full support 4.0 | nodejs Full support Yes |
prototype |
Chrome Full support 39 | Edge Full support 13 | Firefox Full support 26 | IE No support No | Opera Full support 26 | Safari ? | WebView Android Full support 39 | Chrome Android Full support 39 | Firefox Android Full support 26 | Opera Android Full support 26 | Safari iOS ? | Samsung Internet Android Full support 4.0 | nodejs Full support Yes |
Legend
- Full support
- Full support
- No support
- No support
- Compatibility unknown
- Compatibility unknown