- From: Anselm R Garbe <anselm@aplixcorp.com>
- Date: Tue, 14 Jul 2009 10:29:17 +0100
- To: public-webapps@w3.org
Hi Cameron,
2009/7/13 Cameron McCormack <cam@mcc.id.au>:
> 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.
Yes, I'm happy with this proposal, it would provide good syntactical
support for declaring such dictionary interfaces.
Kind regards,
Anselm
Received on Tuesday, 14 July 2009 09:29:59 UTC