My takeaway from this thread is that there is support for the proposed 
__proto__ semantics on the wiki [1], with a few modifications/additions.  Are 
the following a correct summary of the deltas?

*** Accessor vs. Data property
Although there does not appear to be a direct security implication of exposing 
Object.prototype.__proto__ as a true accessor property, there is a desire to be 
conservative about exposing new __proto__ capabilities beyond what is actually 
defacto available on browsers today.  As a result, the initial value of 
__proto__ should appear as a data property to developers, but remain internally 
an accessor property.

*** Object literals
The wiki does not currently discuss the semantics of __proto__ in object 
literals.  Given the desire to allow __proto__ to be removed, it seems more 
details are needed to nail down what this does:

    delete Object.prototype.__proto__
    { __proto__: {x: 1} }

I believe there are two options: 
  (1) __proto__ in object literals always sets the [[Prototype]], irrespective 
of the value of Object.prototype.__proto__ or 
  (2) __proto__ is treated as a [[Put]] instead of a [[DefineProperty]] in the 
Object Intialiser rules

The second option appears more inline with the goals of the wiki proposal.  

When there are multiple __proto__ in an object literal, I believe it has been 
suggested that this produce a SyntaxError.

*** JSON
I believe there is a requirement that JSON.parse('{"__proto__": {}}')  return 
an object with an own data property named __proto__ whose value is {}.  
Browsers currently disagree on this though.

Thanks,
Luke

 [1] http://wiki.ecmascript.org/doku.php?id=strawman:magic_proto_property




_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to