- From: Cameron McCormack <cam@mcc.id.au>
- Date: Mon, 13 Jul 2009 11:28:32 +1000
- To: Anselm R Garbe <anselm@aplixcorp.com>
- Cc: public-webapps@w3.org
Cameron McCormack:
> > Do you need to specify that some of the optional attributes are
> > enumerable while others aren’t? Or should all of the optional
> > attributes be enumerable?
Anselm R Garbe:
> We only need to specify that all (optional) attributes are enumerable,
> so basically that means we need something that says "all attributes of
> this interface are enumerable, including the optional ones".
How about syntax like the following:
dictionary interface GenericDictionary {
};
dictionary interface FileMetadata {
readonly attribute long size;
readonly attribute Date creation;
readonly attribute Date modification;
};
dictionary interface ExtendedFileMetadata : FileMetadata {
attribute boolean readable;
attribute boolean writable;
attribute boolean executable;
};
where:
* Dictionary interfaces cannot declare any constants or operations.
* Dictionary interfaces can inherit only from other dictionary
interfaces.
* In ES, there are no interface prototype objects for dictionary
interfaces and thus don’t affect the prototype chain.
* Attributes are always effectively optional.
* Attributes are exposed as properties on the host object, just like
with regular interfaces.
* Entries in a dictionary interface that don’t correspond to the
attributes declared on them are also exposed as properties on the
host object in ES, and are enumerable (unlike corresponding named
properties for regular interfaces).
* Dictionary interfaces are implicitly [Callable,NoInterfaceObject].
[OverrideBuiltins] could be used, which would make dictionary
lookups take precedence over other property lookups, as with
regular interfaces with getters.
* Dictionary keys are always DOMStrings.
* A “dictionary” (an object that implements one or more dictionary
interfaces) can be designated as “not extensible”, which means
effectively the same thing as not having a creator on a regular
interface.
* An entry in a dictionary can be designed as “read only”, which
means that assigning to it or attempting to remove it will fail
(ignored in ES, exception thrown in Java). Explicit attributes are
designed as read only as with regular interfaces, by using the
"readonly" keyword.
* In Java, any dictionary interface would correspond to the
java.util.Map<String,Object> interface.
--
Cameron McCormack ≝ http://mcc.id.au/
Received on Monday, 13 July 2009 01:29:27 UTC