Thanks, I erroneously looked at ES2015 spec that calls Object.prototype
ordinary object.
The Object prototype object is the intrinsic object
%ObjectPrototype%. The Object prototype object is an ordinary object.
The value of the [[Prototype]] internal slot
<http://www.ecma-international.org/ecma-262/6.0/#sec-object-internal-methods-and-internal-slots>
of the Object prototype object is null and the initial value of the
[[Extensible]] internal slot
<http://www.ecma-international.org/ecma-262/6.0/#sec-object-internal-methods-and-internal-slots>
is true.
On 02/02/17 13:31, T.J. Crowder wrote:
> On Thu, Feb 2, 2017 at 12:19 PM, Michał Wadas <[email protected]
> <mailto:[email protected]>> wrote:
>
> Right now this code:
>
> Object.setPrototypeOf(Object.prototype, Object.create(null))
>
> throws in both Chrome and Firefox. I couldn't find any mention of
> special [[SetPrototypeOf]] of %ObjectPrototype%, did I miss something?
>
> Yes. :-) You missed that `Object.prototype` is an immutable prototype
> exotic object:
>
> *
> https://tc39.github.io/ecma262/#sec-properties-of-the-object-prototype-object
> * https://tc39.github.io/ecma262/#sec-immutable-prototype-exotic-objects
>
> ...which does indeed have a special [[SetPrototypeOf]] which
> (indirectly) returns false if you try to change the [[Prototype].
> `Object.setPrototypeOf` throws when [[SetPrototypeOf]] returns
> false: https://tc39.github.io/ecma262/#sec-object.setprototypeof
>
> -- T.J.
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss