On Nov 15, 2014, at 1:24 AM, David Bruant wrote: > Le 13/11/2014 17:29, Boris Zbarsky a écrit : >> On 11/13/14, 6:44 AM, Andreas Rossberg wrote: >>> Well, the actual diabolic beast and universal foot gun in this example >>> is setPrototypeOf. ;) >> >> Note that there is at least some discussion within Mozilla about trying to >> make the prototype of Object.prototype immutable (such that >> Object.getPrototypeOf(Object.prototype) is guaranteed to always return the >> same thing, modulo someone overriding Object.getPrototypeOf), along with a >> few other things along those lines. See >> <https://bugzilla.mozilla.org/show_bug.cgi?id=1052139>. > This would result in objects which [[Prototype]] cannot be changed but which > properties can be changed. > This is not possible per ES6 semantics I believe unless the object is a proxy > (which setPrototypeOf trap throws unconditionally and forwards the rest to > the target). Is it a satisfactory explanation? Should new primitives be added?
Actually the ES6 semantics does allow for this. The global object would have t be implemented as a new kind of implementation specific exotic object whose [[SetPrototypeOf]] internal method always returns false. A Proxy would be required to self-host such an object using ES code, but at the implementation level a Proxy would not be required. Allen _______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

