Mutable Proto

Andrea Giammarchi andrea.giammarchi at gmail.com
Mon Mar 18 09:08:46 PDT 2013


I would like to see Object.setPrototypeOf(object, proto) too and a
disappeared __proto__ 'till now breaking too much.

It would be much easier to implement all shenanigans via
Object.defineProperty(Object.prototype, '__proto__', {whatever}); rather
than fix current non-standard __proto__ ...

+1


On Mon, Mar 18, 2013 at 9:04 AM, Nathan Wall <nathan.wall at live.com> wrote:

> A previous thread [1] brought to my attention the fact that objects which
> don't inherit from Object.prototype won't have mutable __proto__.  This was
> something I had missed and breaks some scripts I'm currently using because
> I have objects which I don't want to inherit from Object.prototype but for
> which I do want to have mutable proto.
>
> Testing in Firefox Nightly I found this workaround:
>
>     var x = { }, y = { foo: 'bar' };
>
>     x.__proto__ = y;
>     console.log(1, x.foo);
>     // => 1 'bar'
>
>     x.__proto__ = null;
>     console.log(2, x.foo);
>     // => 2 undefined
>
>     x.__proto__ = y;
>     console.log(3, x.foo);
>     // => 3 undefined
>
>     var _setPrototype = Object.getOwnPropertyDescriptor(Object.prototype,
> '__proto__').set,
>         setPrototypeOf = Function.prototype.call.bind(_setPrototype);
>     setPrototypeOf(x, y);
>     console.log(4, x.foo);
>     // => 4 'bar'
>
> Is this workaround a temporary bug in Firefox's current implementation? Or
> will this be the spec'ed behavior for ES6? Can we use such a method to
> mutate prototype on objects which don't inherit from Object.prototype?
>
>
> [1] https://mail.mozilla.org/pipermail/es-discuss/2013-March/029176.html
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20130318/9cb071fe/attachment.html>


More information about the es-discuss mailing list