For those interested in using Proxies in the future, here are the appropriate links to the two remaining holdouts (FF and MS Edge are already there):
Safari/Webkit/JSC: https://bugs.webkit.org/show_bug.cgi?id=35731 Chrome/V8: https://code.google.com/p/v8/issues/detail?id=1543 Bug the appropriate owners ;-). Cheers, - Bill On Tue, Nov 3, 2015 at 4:40 PM, Brendan Eich <[email protected]> wrote: > Ah yes, the Smalltalk "become:" message, something that inspired > SpiderMonkey's "Brain Transplants" -- see the [1] footnote at > https://brendaneich.com/2010/11/proxy-inception/, and of course the > bugzilla link, which leads to this: > > <https://bugzilla.mozilla.org/user_profile?user_id=1214> Brendan Eich > [:brendan] 2010-07-19 17:53:44 PDT > > Burns: [saws off the top of Homer's head. No blood, very clean. > The top of Homer's head rolls away.] > Smithers, hand me that ice-cream scoop. > Smithers: Ice-cream scoop?! > Burns: Dammit, Smithers, this isn't rocket science, it's brain surgery! > > ("If I Only Had a Brain", from "Treehouse of Horror II") > > /be > > > On Tue, Nov 3, 2015 at 6:42 AM Matthew Robb <[email protected]> > wrote: > >> I probably have a terrible understanding of how this all works at a low >> level but I feel like a potential solution would be a method of "upgrading" >> a non-proxy object to be a proxy. The reason accessors are being used as >> they are now is because you can retro fit them. Maybe what I am suggesting >> is essentially like swapping out the internal pointer of an object with >> another object (such as the way live module bindings work). In this way you >> might upgrade an existing object to behave like a proxy. >> >> >> - Matthew Robb >> >> On Tue, Nov 3, 2015 at 3:20 AM, Tom Van Cutsem <[email protected]> >> wrote: >> >>> >>> 2015-11-02 23:34 GMT+01:00 Coroutines <[email protected]>: >>>> >>>> I come from Lua. In Lua we make proxy objects with metamethods. You >>>> create an empty table/object and define a metatable with a __index and >>>> __newindex to catch accesses and changes when a key/property doesn't >>>> exist. I would primarily use this in sandboxes where I wanted to >>>> track the exact series of operations a user was performing to modify >>>> their environment (the one I'd stuck them in). >>> >>> >>> For this type of use case, you can use an ES6 Proxy < >>> https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Proxy>. >>> You can think of the proxy handler's methods as the 'metamethods' of the >>> proxy object. >>> >>> What O.o would provide beyond Proxy is the ability to observe changes to >>> already pre-existing objects. However, since you mention you'd start with >>> an empty table/object, you should be able to create a fresh Proxy and use >>> that to trace all property accesses. >>> >>> Proxies are particularly well-suited when you want to sandbox things, >>> since you should be in control of the sandboxed environment anyway and can >>> set-up proxies to intermediate. O.o is particularly well-suited to >>> scenarios where there are already plenty of pre-existing objects and you >>> don't know ahead of time which ones to observe and which not. >>> >>> Cheers, >>> Tom >>> >>> _______________________________________________ >>> es-discuss mailing list >>> [email protected] >>> https://mail.mozilla.org/listinfo/es-discuss >>> >>> >> _______________________________________________ >> es-discuss mailing list >> [email protected] >> https://mail.mozilla.org/listinfo/es-discuss >> > > _______________________________________________ > es-discuss mailing list > [email protected] > https://mail.mozilla.org/listinfo/es-discuss > >
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

