GeneratorFunction

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  

浏览器兼容

Update compatibility data on GitHub
Desktop Mobile Server
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet Node.js
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

相关链接