medikoo (2013-08-28T07:29:56.000Z)
forbes at lindesay.co.uk (2013-08-28T09:06:39.362Z)
In ES5 there is a concept of array-like, which while probably too relaxed is really friendly for developers, as we can easily create custom array-like abstractions and make it consumable to any generic functions, methods that process array-likes. In ES6 there's more advanced (and definitely better) iterators concept, while I'm pretty excited by it, If read spec correctly I see it's quite limited and not that usable. 1. There's no way I can create custom iterator abstraction (How can I can define `MyCustomIterator.prototype[@@iterator]` method?). 2. There's no straightforward way to consume iterators in generic way, e.g. I want to write function that works in similar way as Set constructor, and accepts any iterator implementation. I don't have a means to call `iterator[@@iterator]` method. Please correct me if I'm wrong, but if it's the case, I think it's really important to open that. Maybe there should be `Reflect.getIterator(obj)` and `Reflect.defineIterator(obj, getIterator)` for that?
forbes at lindesay.co.uk (2013-08-28T09:04:55.337Z)
In ES5 there is a concept of array-like, which while probably too relaxed is really friendly for developers, as we can easily create custom array-like abstractions and make it consumable to any generic functions, methods that process array-likes. In ES6 there's more advanced (and definitely better) iterators concept, while I'm pretty excited by it, If read spec correctly I see it's quite limited and not that usable. 1. There's no way I can create custom iterator abstraction (How can I can define MyCustomIterator.prototype[@@iterator] method?). 2. There's no straightforward way to consume iterators in generic way, e.g. I want to write function that works in similar way as Set constructor, and accepts any iterator implementation. I don't have a means to call iterator[@@iterator] method. Please correct me if I'm wrong, but if it's the case, I think it's really important to open that. Maybe there should be Reflect.getIterator(obj) and Reflect.defineIterator(obj, getIterator) for that?