2016-05-30 11 views
0

タイトルはそれ自身のため、ES6に新しいiterable関数インターフェースがあり、質問はかなり簡単です。 yieldを介してnew Function(...)インターフェイスをサポートする反復可能な関数、ES6で `new Function()`インターフェースを使用してiterable `function *(){}を作成する方法

PS

私は(Google Chromeのコンソールで

var f = function *() { 
    yield 1; 
    yield 2; 
    yield 3; 
} 

をやってみました、その後、f.toStringをやってきました)それは次のような出力が得られた:

function*() { 
    yield 1; 
    yield 2; 
    yield 3; 
} 

ない、それに対処するしかし方法がわからを私は次のことをしようとすると...:

var g = new Function(` 
    yield 1; 
    yield 2; 
    yield 3; 
`); 

それはエラーを生成します。Uncaught SyntaxError: Unexpected number

ありがとうございます!あなたはこのことに興味がしたい場合があります

+0

なぜあなたは 'new Function()'を使いたいのですか? – Cerbrus

+0

私は、その場で生成された動的コードを持っています。新しいES6機能と組み合わせて使用​​することができれば素晴らしいでしょう... – Lu4

+0

すべてを1行に入れなければならないと思います – Aloso

答えて

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

それはあなただけで間違ってコンストラクタを見ていたように見えます、あなたが望むものを基本的になります。

関連する問題