首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

GeneratorFunction

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

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

代码语言:javascript
复制
Object.getPrototypeOf(function*(){}).constructor

语法

代码语言:javascript
复制
new GeneratorFunction ([arg1[, arg2[, ...argN]],] functionBody)

参数

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

描述

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

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

提示:使用GeneratorFunction构造函数创建的生成器函数不会为其创建上下文创建闭包;它们始终在全局范围内创建。当运行它们时,它们只能访问自己的本地变量和全局变量,而不是从GeneratorFunction构造函数调用的范围的变量。这与使用eval与生成函数表达式的代码不同。

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

属性

GeneratorFunction.lengthGeneratorFunction构造函数的 length 属性值为 1。

GeneratorFunction.prototype允许向所有生成器函数对象添加属性。

GeneratorFunction 原型对象

属性

GeneratorFunction.constructor初始值是GeneratorFunction.

GeneratorFunction.prototype.prototype值是?%GeneratorPrototype%.

GeneratorFunction 实例

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

示例

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

代码语言:javascript
复制
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)The definition of 'GeneratorFunction' in that specification.

Standard

Initial definition.

ECMAScript Latest Draft (ECMA-262)The definition of 'GeneratorFunction' in that specification.

Living Standard

?

浏览器兼容性

Feature

Chrome

Firefox (Gecko)

Internet Explorer

Opera

Safari

Basic support

(Yes)

26 (26)

?

?

?

Feature

Android

Chrome for Android

Firefox Mobile (Gecko)

IE Mobile

Opera Mobile

Safari Mobile

Basic support

?

(Yes)

26 (26)

?

?

?

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com