2017-11-27 4 views
1

Generator-Objekt zurückgegeben durch die Generatorfunktion implementiert iterator Schnittstelle mit der next Methode `next` Methode implementiert:Warum bekomme ich `o` nicht Iterable wenn es Generator-Objekt zurückgibt, die von` Iterator` Schnittstelle

function *f() { 
    yield 0; 
    yield 1; 
    yield 2; 
} 

const o = {}; 
o[Symbol.iterator] = f(); 

const a = [...o]; 

Ich implementierte auch Symbol.iterator Methode auf o, um es iterierbar zu machen. Also warum bekomme ich o ist nicht iterabler Fehler.

+1

Ernsthaft ?! Wer schreibt eine so gute Frage? –

Antwort

3

Sie rufen die Funktion f anstatt es zu übergeben. Entfernen Sie die Klammer in Ihrem Codeblock wie folgt und versuchen Sie es erneut:

o[Symbol.iterator] = f; 
1

Sie müssen die Funktion selbst zuweisen.

function *f() { 
 
    yield 0; 
 
    yield 1; 
 
    yield 2; 
 
} 
 

 
const o = {}; 
 
o[Symbol.iterator] = f; 
 

 
const a = [...o]; 
 

 
console.log(a)

Verwandte Themen