On Aug 6, 2008, at 12:27 AM, Cameron McCormack wrote:

Hi Garrett.

Garrett Smith:
In EcmaScript, the property access operators seem to look like a
"getter" to Cameron. What they really do is provide access to
properties added to the collection, or, in one case (on one
implementation), this seems implemented as a "getter". A "getter" is a
method that gets the value of a property of that name.

I’m sorry I haven’t had a chance to reply yet, I’ve been quite busy with
other things and haven’t had a chance to work on Web IDL for the last
few weeks.  (Actually I had a half written reply to your earlier mail
drafted, but I hadn’t got to finishing it yet.)

Your tests do show that the HTML collections expose items through real
properties rather than “fake” ones returned through a custom [[Get]].
So yes that means that HTML 5 won’t be able to use [IndexGetter] etc. to accurately describe current browser behaviour. That doesn’t necessarily mean that [IndexGetter] etc. will have to be changed, just that for the
purpose of documenting HTML collections they’re insufficient.

I think Garret has a valid point (despite his needlessly rude tone) that the way we describe magical dynamic properties in a way that makes clear they are also visible to the "in" operator and to Object.prototype.hasOwnProperty. Are there any DOM bindings that have index (or named) properties which are *not* visible in such a way? If not, then the current [IndexGetter] definition is useless and we need a better formalism.

I think that Web IDL can’t provide as much syntactic help for HTML
collections where the properties are real.  So HTML will probably have
to include a sentence such as:

I also don't understand what is meant to by calling some properties "real". I don't think this is a meaningful distinction. The core of the point that Garret raised (as far as I can tell) is that the properties are visible to has/in checks as well as gettable, and I think this is true in all cases of DOM objects with dynamic index/ named properties.

 In the ECMAScript language binding, for every node in the collection
 there must exist a property on the collection object whose name is
 the index of the node in the collection, and whose value is the node.

With some wording about whether these extra properties take precedence
over other properties on the object due to the interface, etc.  Ian?

I think Web IDL should provide a formalism to cater to this, because nearly all bindings with special dynamic properties work like this afaik. But I think it would have to involve a pseudo-method for the "hasOwnProperty" check (which "in" is based on).


Regards,
Maciej

Reply via email to