Re: [PrototypeRoot]

Ian Hickson:
> In that case I would like us to do this (specifically, define [[Class]] 
> for objects that have only one non-[NoPrototypeObject] interface), since 
> that's the majority of them, and it would be better than having to 
> sprinkle [PrototypeRoot] all over the place.

Done:

  The value of the internal [[Class]] property of a host object is
  determined as follows:
    * If the host object implements a single interface, then the value
      of the internal [[Class]] property MUST be the identifier of
      that interface. 
    * Otherwise, if the host object has a primary prototype interface,
      then the value of the internal [[Class]] property MUST be the
      identifier of that interface.
    * Otherwise, no particular value is required to be used for the
      value of the internal [[Class]] property.
   — http://dev.w3.org/2006/webapi/WebIDL/#host-objects

Note that this still technically does not mean you can guarantee that
the NodeList returned by querySelectorAll() has [[Class]] == "NodeList",
since it could be that that host object implements another interface,
which might be required by another spec, or perhaps just because the
implementation wants to.  There’s nothing in selectors-api that says
“the object returned from querySelectorAll() must implement the NodeList
interface and no others” (and I don’t think it’d be a good idea to
require that).

-- 
Cameron McCormack ≝ http://mcc.id.au/

Received on Saturday, 7 March 2009 05:49:09 UTC