[英]How to create iterable `function *() {}` via `new Function()` interface in ES6
标题本身就是一个标题,ES6中有一个新的可迭代函数接口,问题很简单,如何通过new Function(...)
接口创建一个支持yield
的可迭代函数,
PS
我试着做
var f = function *() {
yield 1;
yield 2;
yield 3;
}
在Google Chrome控制台中,然后执行f.toString(),它给出以下输出:
function* () {
yield 1;
yield 2;
yield 3;
}
但是我不确定如何处理...当我尝试以下操作时:
var g = new Function(`
yield 1;
yield 2;
yield 3;
`);
它产生错误: Uncaught SyntaxError: Unexpected number
错误Uncaught SyntaxError: Unexpected number
先感谢您!
您可能对此感兴趣:
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/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/GeneratorFunction
它基本上使您想要的东西看起来像您在看错误的构造函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.