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