GeneratorFunction - JavaScript 编辑
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
构造函数创建的生成器函数
不会为其创建上下文创建闭包;它们始终在全局范围内创建。当运行它们时,它们只能访问自己的本地变量和全局变量,而不是从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 (ECMA-262) GeneratorFunction | Living Standard |
浏览器兼容
BCD tables only load in the browser
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.相关链接
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论