在ES6中,如何获得生成器内生成器函数的名称?

时间:2014-01-22 18:16:05

标签: generator v8 ecmascript-harmony

使用普通的ECMAScript,您可以执行类似的操作,

function f () { console.log(this.constructor.name); }
new f() // outputs `f`

然而,稍作修改,

function* f () { console.log(this.constructor.name); }
var g = new f();
g.next() // outputs `GeneratorFunctionPrototype`

无论如何都要获取生成器的名称(f)?

1 个答案:

答案 0 :(得分:0)

您可以使用callee对象的属性arguments请注意,callee已从ES5严格模式中删除(不幸的是不知道ES6)。

所以你会得到类似的东西:

function* f () {console.log(arguments.callee.name);}
var g = new f();
g.next() // outputs `f`