B.3.1 The __proto__ pseudo property

Brendan Eich brendan at mozilla.com
Sun Apr 21 12:05:06 PDT 2013

Brendan Eich wrote:
> Allen Wirfs-Brock wrote:
>> On Apr 21, 2013, at 11:12 AM, Brendan Eich wrote:
>>> David Herman wrote:
>>>> On Apr 21, 2013, at 8:55 AM, Allen 
>>>> Wirfs-Brock<allen at wirfs-brock.com>   wrote:
>>>>> Deleting Object.prototype.__proto__ will not be be specified as 
>>>>> disabling {__proto__: foo}.
>>>> Was that what we'd agreed to?
>>> I think what Allen means is, whether or not there's a magic 
>>> Object.prototype.__proto__, you can
> Note "can" here.
>>>   define (as in [[DefineOwnProperty]]) a plain old data property (or 
>>> an accessor, for that matter, just different syntax) whose name is 
>>> '__proto__' in an object literal.
>> No, see the spec. strawman I posted.
>> What I mean is that:
>>      let obj = {__proto__: null}
>> will always create an object whose [[Prototype]]

Didn't you mean "an object whose property named '__proto__'" here?

>> is null.  Regardless of whether or not anybody has done:
>>     delete Object.prototype.__proto__.
> Yes, that's what I just wrote!
> What part was unclear?

Sorry, I misread your "[[Prototype]] is null" as "property named 
'__proto__' is null".

But you cannot break ES5. Why are you changing things to deviate from 
it, never mind from ES6 consensus?


More information about the es-discuss mailing list