JavaScript参考手册
函数 | Function
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
构造函数创建的生成器函数
不会为其创建上下文创建闭包;它们始终在全局范围内创建。当运行它们时,它们只能访问自己的本地变量和全局变量,而不是从GeneratorFunction
构造函数调用的范围的变量。这与使用eval
与生成函数表达式的代码不同。
将GeneratorFunction
构造函数调用为函数(不使用new
运算符)与将其作为构造函数调用的效果相同。
属性
GeneratorFunction.lengthGeneratorFunction
构造函数的 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)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) |
? |
? |
? |
函数 | Function相关
JavaScript 是一种高级编程语言,通过解释执行,是一门动态类型,面向对象(基于原型)的解释型语言。它已经由ECMA(欧洲电脑制造商协会)通过 ECMAScript 实现语言的标准化。它被世界上的绝大多数网站所使用,也被世界主流浏览器( Chrome、IE、FireFox、Safari、Opera )支持。JavaScript 是一门基于原型、函数先行的语言,是一门多范式的语言,它支持面向对象编程,命令式编程,以及函数式编程。它提供语法来操控文本、数组、日期以及正则表达式等,不支持 I/O,比如网络