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@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.w...@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@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to