Implementing membranes using proxies, and [[GetInheritance]]
bruant.d at gmail.com
Wed Sep 11 08:02:04 PDT 2013
Le 11/09/2013 16:22, Tom Van Cutsem a écrit :
> 2013/9/11 David Bruant <bruant.d at gmail.com <mailto:bruant.d at gmail.com>>
> I think it was discussed at some point to get rid of the
> restriction on the getPrototypeOf trap and enforce it only for
> non-extensible objects (but I can't find the info anymore, I might
> just be inventing this...). It would allow you to return a
> different object assuming the target is and remains extensible
> (more on that below).
> No, I think you're confusing with an invariant on [[SetInheritance]].
> Basically [[SetInheritance]] has no invariants as long as the object
> is extensible. If it is non-extensible, then proxies enforce that the
> prototype of proxy and target are the same, see
> [[GetInheritance]] always checks whether the proxy and target's
> prototype are the same, but as you pointed out, if the target is
> extensible, you can set its prototype to some other object before
> returning a value from the getPrototypeOf trap.
It's annoying to cleanup post-trap though (to restore the target initial
prototype). Is the invariant on getPrototypeOf that important on
I think it is the only trap that enforces something without a related
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the es-discuss