Help with removing __iterator__ from JS

David Bruant bruant.d at gmail.com
Wed Jul 22 12:56:56 UTC 2015


Hi Paolo,

The ES6 iterator protocol is what you're looking for. See:
* 
https://hacks.mozilla.org/2015/04/es6-in-depth-iterators-and-the-for-of-loop/
* 
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/iterator

Alongside with the computed property syntax, you should be able to 
achieve what you want. Something along the lines of:
------------
function makeIterableEventList(el){
     el[Symbol.iterator] = function(){ /* define iterator here*/ }
     return el;
}

   events: {
     [Symbol.iterator]: function(){ /* define iterator here*/ }
     mainview: makeIterableEventList({
       focus(event) {},
     }),
     filter: makeIterableEventList({
       input(event) {},
     }),
   },

   this.boundEventHandlers = [
     for ([elementName, events] of this.events)
     for ([eventName, handler] of events)
     [elementName, eventName, handler.bind(this)]
   ];
---------------

It should work in Firefox today (at least the Symbol.iterator and 
computed object prop parts. Not 100% sure about the array comprehension 
as I haven't tested)

David

Le 22/07/2015 14:42, Paolo Amadini a écrit :
> On 7/21/2015 12:07 PM, Tom Schuster wrote:
>> Aside: Please also try avoid using Iterator().
>
> What would be the alternative to Iterator() when I need to iterate and
> easily assign both keys and values of an object to local variables?
>
> See for example <https://bugzilla.mozilla.org/show_bug.cgi?id=980828>:
>
>   this.boundEventHandlers = [
>     for ([elementName, events] of Iterator(this.events))
>     for ([eventName, handler] of Iterator(events))
>     [elementName, eventName, handler.bind(this)]
>   ];
>
> There's more context on the bug for the specific example (the bug is
> about supporting destructuring in comprehensions in the first place)
> but my concern in general is that I've failed to find an alternative
> to Iterator() that is as expressive.
>
> Cheers,
> Paolo
> _______________________________________________
> firefox-dev mailing list
> firefox-dev at mozilla.org
> https://mail.mozilla.org/listinfo/firefox-dev




More information about the firefox-dev mailing list