如何在类中创建迭代器

Jea*_*eri 1 javascript iterator ecmascript-6

对于ES2015 js类,我想要一个迭代器.所以我尝试了以下内容

export default class MyList {
    iterator* () {
        // Dummy implementation
        let counter = 0;
        while(true) {
            yield counter++;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

因为我想做

let list = new MyList();
    iter = list.iterator();

while(!iter.done()) { ... }
Run Code Online (Sandbox Code Playgroud)

例如.

但是,这不起作用.所以问题是,在类中实现迭代器的首选方法是什么?

Aza*_*tes 5

'*'应该在函数名之前.像这样:

export default class MyList {
    *iterator() {
        // Dummy implementation
        let counter = 0;
        while(true) {
            yield counter++;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

别客气.