Allen Wirfs-Brock wrote:
On Apr 21, 2013, at 10:03 AM, Brendan Eich wrote:
Allen Wirfs-Brock wrote:
This isn't what we seemed to agree on at past TC39 meetings.

It's also not what the engines trying to converge on ES6 semantics have 
implemented.

It's not clear to me, yet what convergence we actually have.

Read the meeting notes to remind yourself:

https://mail.mozilla.org/pipermail/es-discuss/2013-February/028631.html

Look for

BE: (Review of latest changes to __proto__ in Firefox)

and read on.

Regardless, it's only observable via Object.getOwnPropertyDescriptor(Object.prototype, 
"__proto__") which in my proposal returns undefined when Dunder proto is active 
and in other proposals returns a function that when evaluated throws something.

No. From those notes:

EA: Throws if called with object and setter coming from different realms
   The semantics of Dunder proto that have been discussed isn't just  that of 
an accessor property and can't be purely implemented as such so I no value in 
trying to masquerade it as an accessor for getOwnPropertyDescriptor.  Returning 
get/set functions that always throws is just adding complexity that delivers no 
value.

The proposal we've discussed does no such thing. What's implemented in JSC, SpiderMonkey, V8 does no such thing.

js> var d = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__')
js> d
({configurable:true, enumerable:false, get:function () {
    [native code]
}, set:function () {
    [native code]
}})
js> var o = {}
js> d.get.call(o)
({})
js> d.get.call(o) === Object.prototype
true
js> d.set.call(o, null)
js> d.get.call(o)
null

The censorship requires a realm-check. That seems (and seemed, to TC39 in January) better than a wart in Object.getOwnPropertyDescriptor that turns a blind eye to the existence of '__proto__' in Object.prototype in contradiction to plainly observable facts!

/be
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to