For background on design goals of ES proxies see https://research.google.com/pubs/archive/40736.pdf
On Mar 30, 2017, 12:44 PM, at 12:44 PM, Michael Lewis <[email protected]> wrote: >> >> I don't believe Proxies are designed to give you any encapsulation to >a >> user who also has a reference to the target object >> > >So the Proxy wasn't designed to proxy real objects that operate with >real >code? > >`myRealFunction(obj)` <---> `myRealFunction(proxy)` > >This could be incredibly useful. You could log every get/set/method >call >on the obj. And, this *will* work in 99% of use cases. Just cross >your >fingers that your code doesn't use the comparison operator. > >you'd have to never provide the reference to the target object in the >first >> place. > > >Yea, that's what I'm doing. But inside a constructor, you basically >have >to create the proxy first thing, call all initialization logic on the >proxy >instead of `this`, and return the proxy. And when you're only proxying >if >`log: true` has been set, you have to maybe proxy, but maybe not. I >can >work around it, but I'm not happy about it ;) > >ljharb ftw! (I am delevoper on IRC, the one frequently ranting about >the >software revolution) > >On Thu, Mar 30, 2017 at 1:53 PM, Jordan Harband <[email protected]> >wrote: > >> I don't believe Proxies are designed to give you any encapsulation to >a >> user who also has a reference to the target object - you'd have to >never >> provide the reference to the target object in the first place. >> >> On Thu, Mar 30, 2017 at 11:50 AM, Michael Lewis <[email protected]> >wrote: >> >>> Hello community, >>> >>> The proxy is almost an identical to the underlying object, but it* >fails >>> a comparison check with the underlying object.* >>> >>> This means that if anyone gets a reference to the underlying object >>> before it is proxied, then we have a problem. For example: >>> >>> var obj = {}; >>> var proxy = new Proxy(obj, {}); >>> obj == proxy; // false >>> >>> *Isn't the purpose of the proxy to be exchanged with the original**, >>> without any negative side effects? *Maybe that's not the intended >use >>> case, but it's a useful one. And, besides the comparison, I can't >think of >>> any other "negative side effects". >>> >>> It seems like the Proxy could have a *comparison trap*. The >comparison >>> could pass by default, and you could use the trap if you wanted to >make >>> `proxy == obj` fail. >>> >>> Also, a slight tangent: it would be awesome if you could *skip >debugging >>> proxy traps when stepping through code. *When you proxy both `get` >and >>> `apply` for all objects/methods, you have 10x the work when trying >to step >>> through your code. >>> >>> I just subscribed to this list. Is this an appropriate venue for >this >>> type of inquiry? I appreciate any feedback. >>> >>> >>> >>> Thanks! >>> >>> Michael >>> >>> >>> >>> _______________________________________________ >>> 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

