Proxies fail comparison operator

Michael Kriegel michael.kriegel at actifsource.com
Fri Mar 31 10:06:04 UTC 2017


I agree with everyone, that the proxy object should not equal the 
proxied object.

What you really want to ask for is for JavaScript support for overriding 
the comparison operator for a class. (and other operators, too...)


On 30.03.2017 21:44, Michael Lewis 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 <ljharb at gmail.com 
> <mailto:ljharb at gmail.com>> 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 <mike at lew42.com
>     <mailto:mike at lew42.com>> 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
>         es-discuss at mozilla.org <mailto:es-discuss at mozilla.org>
>         https://mail.mozilla.org/listinfo/es-discuss
>         <https://mail.mozilla.org/listinfo/es-discuss>
>
>
>
>
>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss

-- 
Michael Kriegel • Head of R&D • Actifsource AG • Haldenstrasse 1 • CH-6340 Baar • www.actifsource.com • +41 56 250 40 02

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20170331/129de2e2/attachment-0001.html>


More information about the es-discuss mailing list