RE: Mutable Proto

François REMY at
Mon Mar 18 09:14:20 PDT 2013

I certainly agree, but it has been decided otherwhise by the TC39 members and I doubt they’re willing to revert their decision.



De : Andrea Giammarchi
Envoyé : ‎18‎ ‎mars‎ ‎2013 ‎17‎:‎08
À : Nathan Wall
Cc : es-discuss at
Objet : Re: Mutable Proto

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__ ... 


On Mon, Mar 18, 2013 at 9:04 AM, Nathan Wall <nathan.wall at> 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;
    // => 1 'bar'

    x.__proto__ = null;
    // => 2 undefined

    x.__proto__ = y;
    // => 3 undefined

    var _setPrototype = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set,
        setPrototypeOf =;
    setPrototypeOf(x, y);
    // => 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?

es-discuss mailing list
es-discuss at
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the es-discuss mailing list