标题代表自己,ES6中有一个新的可迭代函数接口,问题很简单,如何通过yield
接口创建一个支持new Function(...)
的可迭代函数,< / p>
P.S。
我已经尝试过了
var f = function *() {
yield 1;
yield 2;
yield 3;
}
在谷歌Chrome控制台中,然后执行f.toString(),它提供了以下输出:
function* () {
yield 1;
yield 2;
yield 3;
}
不确定如何处理它...当我尝试以下内容时:
var g = new Function(`
yield 1;
yield 2;
yield 3;
`);
产生错误:Uncaught SyntaxError: Unexpected number
提前谢谢!
答案 0 :(得分:4)
您可能希望对此感兴趣:
var GeneratorFunction = Object.getPrototypeOf(function*(){}).constructor
var g = new GeneratorFunction("a", "yield a * 2");
var iterator = g(10);
console.log(iterator.next().value); // 20
这是来自MDN的示例:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/GeneratorFunction
它基本上是你想要的,看起来你只是看着错误的构造函数。