- From: David Flanagan <dflanagan@mozilla.com>
- Date: Tue, 21 Jun 2011 15:43:18 -0700
- To: Boris Zbarsky <bzbarsky@MIT.EDU>, Jonas Sicking <jonas@sicking.cc>, Allen Wirfs-Brock <allen@wirfs-brock.com>, public-script-coord@w3.org
On 6/21/11 1:36 PM, David Flanagan wrote:
> On 6/16/11 7:42 PM, Cameron McCormack wrote:
>> Cameron McCormack:
>>> My plan was (and I’ve written a patch to the spec to do this but
>>> haven’t
>>> committed it yet) to redefine [[GetOwnProperty]] (as opposed to
>>> [[Get]])
>>> to make it appear like real own properties exist on the object.
>> I’ve made this change now. I’ve done it for named properties too, but I
>> still need to do a bit of testing around that.
>>
> My new reading of this new definitions of [[GetOwnProperty]] is that
> for interfaces like HTMLCollection that do not OverrideBuiltins, both
> built-in properties on the prototype and expando properties on the
> collection itself hide named properties. I'd like to double-check that
> this is intentional since Firefox and Chrome seem to have named
> properties hide expandos.
>
> David
>
My reading of [[DefineOwnProperty]] for named properties was that we
ought to be able to define an expando property x even when a named
property x also exists, and that the new expando will hide the named
property.
However, while writing my proxy-based implementation of HTMLCollection,
I discovered that the default proxy handler set() trap does not call the
defineProperty() trap when you try to set an existing read-only
property. In that case, it simply ignores the attempt to set the
property. I suspect that is what the ES-262 says to do even without
proxies, so my new interpretation of how named properties and expandos
should interact is the following:
1) A pre-existing named property will prevent the definition of an
expando property with the same name, so there is no shadowing issue.
2) A pre-existing expando will shadow a named property that comes into
existance after the expando. [This is different than the current
behavior of FF and Chrome, at least.]
Is this the intent of the spec?
David
Received on Tuesday, 21 June 2011 22:43:46 UTC