繁体   English   中英

如何通过ES6中的`new Function()`接口创建可迭代的`function *(){}`

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM