Proposal: Proxy iteration (`let ... of ...`) trap handler

Tycho Grouwstra tychogrouwstra at
Sun Sep 25 04:54:16 UTC 2016

Thank you.

To elaborate a bit, what I'm trying to do is use Proxy so as to enable
FSM-like DSLs, essentially having one Proxy type represent the current
'state' dictating what DSL you're in, one property access choosing to
either yield a new proxied object, yielding an unwrapped version, or one
wrapped in a different proxy type.

This is why I'd wanted to be able to trap different operations, as they
help to give ways to distinguish cases (return a wrapped result etc.). The
point would be this would allow a user to 'navigate' something pretending
to be a regular object, even though it isn't (e.g. async values like
Promises/Observables, remote collections too costly to fetch in full unless
needed, decycled versions of the regular object for the purpose of
serialization, you name it...).

On Sun, Sep 25, 2016 at 12:32 PM, saam barati <saambarati1 at> wrote:

> The purpose of the iterator protocol is to be flexible and to work well
> with custom defined iterators. for...of is more or less sugar around the
> iterator protocol. Not sure why you even need a Proxy to easily customize
> for...of behavior for arbitrary objects.
> More documentation on the protocol can be found here:
> Reference/Iteration_protocols
> - Saam
> On Sep 24, 2016, at 8:34 PM, Tycho Grouwstra <tychogrouwstra at>
> wrote:
> I'd like to propose adding support for an iteration trap handler for
> Proxy, fleshing out the list of [currently supported Proxy handlers](
> Objects/Proxy#Methods_of_the_handler_object).
> I think Proxy is among the most powerful features of JS, so I find it
> unfortunate iteration, a common operation, is still missing. No new syntax
> would be required for this addition.
> On a side-note, I'd be happy if there were no additional [requirements](
> on usage of such a trap, but
> I'm not sure that would complicate implementation.
> _______________________________________________
> es-discuss mailing list
> es-discuss at
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the es-discuss mailing list