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

# Tycho Grouwstra (8 years ago)

I'd like to propose adding support for an iteration trap handler for Proxy, fleshing out the list of currently supported Proxy handlers. 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.

# Jordan Harband (8 years ago)

Does a trap for [[Get]] on Symbol.iterator not provide you the ability to intercept iteration by returning a custom function?

# saam barati (8 years ago)

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: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols

# Tycho Grouwstra (8 years ago)

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...).

# saam barati (8 years ago)

It seems like Jordan's suggestion is what you want then.

# Alexander Jones (8 years ago)

Yes, please don't special case for-of handling, it's nicely expressed in terms of other concepts.