22408


ES2015 ClassesでIterableなClassを作りたいです  
Pythonだと`__iter__`と`__next__`というメソッドを実装すればIterableなクラスを作成できますが、ESではどうすればいいのでしょうか?


CC BY-SA 3.0
2016-02-22T14:21:26.480
22402
2016-02-22T20:48:26.283
5246
question
javascript ecmascript-6
ESでIterableなクラスを作る


プロパティ名が`Symbol.iterator`シンボルであるメソッドを定義します。  
また、Generator メソッドにすると楽です。

[code]

    class A {
        *[Symbol.iterator]() {
            yield 1;
            yield 2;
            yield 3;
        }
    }
    
    const a = new A();
    for (const item of a) {
        console.log(item); // 1 2 3
    }
    
[/code]

他の例:

[code]

    class B {
        constructor() {
           this._list = [1,2,3];
        }
    
        *[Symbol.iterator]() {
            for (const item of this._list) {
                yield item;
            }
        }
    }
    
    const b = new B();
    for (const item of b) {
        console.log(item); // 1 2 3
    }
    
[/code]


CC BY-SA 3.0
2016-02-22T20:48:26.283
22408
2016-02-22T20:48:26.283
4809
22402
answer