RE: Mutable Proto

François REMY francois.remy.dev at outlook.com
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 mozilla.org
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__ ... 




+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/fb701bd6/attachment.html>


More information about the es-discuss mailing list