Why can’t for-of be applied to iterators?

Brandon Benvie bbenvie at mozilla.com
Tue Jun 11 09:41:59 PDT 2013

On 6/11/2013 5:50 AM, Tab Atkins Jr. wrote:
> On Tue, Jun 11, 2013 at 2:08 AM, Axel Rauschmayer <axel at rauschma.de> wrote:
>> On the other hand, turning every iterator into an iterable puts the burden
>> on people implementing iterators: they have to implement the iterable
>> interface.
> That's... not really a burden.  It's literally just adding an
> @@iterator method whose body is "return this;".  It's the right place
> to put the burden, too - manual iterator authors are much, much fewer
> than for-of users.

It may be worth noting that, while it hasn't made it into the ES6 spec 
(yet?), the iterators strawman [1] (and modules_standard strawman [2]) 
had an `Iterator` class that all the builtin iterators (Map, Set, 
Generator, etc.) inherited from who's prototype had @@iterator built in. 
So usually the only burden for iterator authors was to create a class 
that inherited from Iterator.

     import { Iterator } from '@iter';
     class MyIterator extends Iterator { /*...*/  }

[1] http://wiki.ecmascript.org/doku.php?id=harmony:iterators
[2] http://wiki.ecmascript.org/doku.php?id=harmony:modules_standard

More information about the es-discuss mailing list