B.3.1 The __proto__ pseudo property

Brendan Eich brendan at mozilla.com
Sun Apr 21 20:41:09 PDT 2013

So as my last post said, if there's no observable difference in the 
field in switching from [[Put]] to [[SetInheritance]], then you and Mark 
are right, and we can do that in ES6 without fear of breaking any code.

This change *is* observable in ES6, though. That's why I summoned Mark: 
to make sure there's no SES issue with setting _ab initio_ the 
[[Prototype]] (or now I guess it's called [[Inheritance]]) of a fresh 
object created via an object literal.

Allen Wirfs-Brock wrote:
>> Triangle died for several reasons, and I'm surprised to hear it here. Grinding an axe?
> Not at all!  You frequently have said that standardizing __proto__ takes the wind out of other features that support various use cases of defining/manipulating an object's [[Prototype]].  One of those features is using an object literal as a way to declaratively describe an object that inherits from something other than Object.prototype (including null).

The argument is that anyone code that deletes Object.prototype.__proto__ 
should not affect object literals wiring up from-birth inheritance is 
fair. I shouldn't have mentioned axes, sorry.

The only issue is the ES6 => SES one. If Mark's happy, then we are done 
as far as this [[Put]] vs. [[SetInheritance]] argument goes.

The quoted vs. unquoted difference is horrifying to me, I threw up in my 
mouth a little. More on that elsewhere.


More information about the es-discuss mailing list