David - You did give an answer on that bug, and I do appreciate it :-). I wanted to raise the issue here for folks that are not subscribed to that bug, since it seems (thankfully) that the proposed functionality hasn't been frozen yet.
I guess what would be missing for me is that, unless I misunderstand your proposed syntax there, the creation of the 'Array' using the '<|' operator would still require the creator to use said syntax. What I'm looking for is "transparent" behavior (i.e. if I'm using a third-party library that uses '[]' to create Arrays, for instance, it 'automagically' gets my Proxy/backstop behavior). 'Proxy.startTrapping()' sounds very interesting... a quick search didn't turn up anything. Do you have any pointers to discussions, strawmen, etc.? Cheers, - Bill On Oct 17, 2011, at 4:43 PM, David Bruant wrote: > Le 17/10/2011 21:43, William Edney a écrit : >> >> Tom - >> >> Been following the proxy work for quite a while and, as the original >> requestor for __noSuchMethod__ to be added to Spidermonkey, I have been keen >> to see the functionality as I describe here: >> >> https://bugzilla.mozilla.org/show_bug.cgi?id=683218#c8 >> >> I'm not sure as to whether direct proxies would solve that problem for me. >> AFAICT, they wouldn't... > Direct proxies can be used to implement the previous proposal and the > previous proposal can be used to implement direct proxies, so direct proxies > cannot solve more than the previous proxy proposal could. > > I gave an answer to your concern. See > https://bugzilla.mozilla.org/show_bug.cgi?id=683218#c13 > > Direct proxies have access to the target (which is mostly the equivalent to > accessing the proxy in the previous design). Combined with the proto > operator, it seems that you could mostly solve your use case. > What would be missing? > > Additionally, Proxy.startTrapping could be helpful to you (though it may be > too controversial. We'll see) > > David > >> >> Comments? >> >> Cheers, >> >> - Bill >> >> On Oct 17, 2011, at 2:15 PM, Tom Van Cutsem wrote: >> >>> Hi, >>> >>> A couple of weeks ago, Mark and I sat together to work on a number of open >>> issues with proxies, in particular, how to make proxies work better with >>> non-configurable properties and non-extensible objects. The result is what >>> we call "direct proxies": in our new proposal, a proxy is always a wrapper >>> for another "target" object. By slightly shifting our perspective on >>> proxies in this way, many of the earlier open issues go away, and the >>> overhead of proxies may be substantially reduced in some cases. >>> >>> I just finished a first draft of the strawman: >>> <http://wiki.ecmascript.org/doku.php?id=strawman:direct_proxies>. Feedback >>> welcome. >>> >>> A prototype implementation that builds upon FF7 proxies is available also: >>> <http://code.google.com/p/es-lab/source/browse/trunk/src/proxies/DirectProxies.js> >>> (note: I still need to thoroughly test this code, but it's otherwise an >>> accurate description of the semantics of direct proxies in terms of current >>> proxies.) >>> >>> Mark and I will present this proposal in detail at the TC39 November >>> meeting. In the meantime, it may use some es-discuss eyeballs. >>> >>> To whet your appetite, some advantages of direct proxies w.r.t. the current >>> proposal: >>> - Enable emulation of non-configurable properties. >>> - Enable emulation of non-extensible, sealed and frozen objects. >>> - Proxies inherit [[Class]] from target. Enables faithful wrapping of Host >>> objects, Arrays, etc. >>> - “Fixing” a proxy (i.e. stopping the handler from trapping), is decoupled >>> from “protecting” a proxy (making it non-extensible, sealed or frozen). >>> - No need to distinguish between object and function proxies anymore. >>> - All traps become optional. >>> - Wrapping an existing object using a direct proxy creates less overhead, >>> no need to pass through an explicit ForwardingHandler anymore. >>> - Proxies can't violate non-configurability / non-extensibility invariants. >>> This in turn enables safe transformation of regular objects into proxies >>> (Proxy.attach) >>> - The default forwarding handler becomes a stateless singleton object. >>> >>> Also, thanks to David Bruant for being an early sounding board and >>> providing some useful API tweaks. >>> >>> Cheers, >>> Tom >>> _______________________________________________ >>> es-discuss mailing list >>> es-discuss@mozilla.org >>> https://mail.mozilla.org/listinfo/es-discuss >> >> >> >> _______________________________________________ >> es-discuss mailing list >> es-discuss@mozilla.org >> https://mail.mozilla.org/listinfo/es-discuss >
_______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss