Hi Boris, Thanks, this is really helpful.
On Sep 5, 2013, at 7:15 PM, Boris Zbarsky <[email protected]> wrote: > Ccing public-script-coord, since that's the right place for this discussion > (because WebIDL is the relevant specification). > > On 9/5/13 6:45 PM, Gavin Barraclough wrote: >> Firefox and Chrome both return descriptors from an object on the prototype >> chain per the spec > > Chrome doesn't quite follow the spec here, for what it's worth: it returns > them from Window.prototype as far as I can tell, not from an actual named > properties object. Interesting, I had just assumed this was okay – is it not spec-compliant for Window.prototype to be a named properties object? >> attributes of the value are configured differently, with enumerable set to >> false, writable and configurable set to true. > > Current tip Firefox returns > {"configurable":true,"enumerable":true,"writable":true} and enumerates the > properties. Probably a change from > https://bugzilla.mozilla.org/show_bug.cgi?id=895758 to align better with the > spec in terms of the enumeration behavior. > >> There seem to be some compelling reasons to follow Firefox / Chrome >> (writable true seems more congruent with ECMA262 specified [[Put]] > > Indeed. I think the current setup in the spec would make window.foo not > settable if <img id="foo"> exists.... That seems bad. I believe these properties are implemented as shadowable in the same way as [Replaceable] properties, so I was somewhat expecting the spec to define properties returned by named property objects to implicitly have the [Replaceable] extended attribute specified in WebIDL (and then assume a modified behaviour of ES [Put] for properties with this attribute, to permit overwrite even if readonly). But I’m not yet familiar enough with the spec to know if this is a reasonable line of thought. :-) Thanks, Gavin >> unless there is another mechanism I’m missing here, enumerable is odd since >> I don’t think the spec says anything about [[GetOwnPropertyNames]]) > > It doesn't, but it does talk about enumeration; see > http://dev.w3.org/2006/webapi/WebIDL/#property-enumeration (whether that's > applicable to the Named Properties Object is an interesting question). > > Granted, I would rather that were defined in terms of [[GetOwnPropertyNames]] > on the relevant objects instead; that's what actually needs to happen under > the hood anyway. > >> ,so I was hoping to better understand why the spec requires the behaviour it >> does (or whether I’m just following it incorrectly!) > > I think you're following it correctly; it's just buggy. ;) > > -Boris
