First paragraph of ECMAScript binding of attributes shouldn't immediately be constrained further

Currently the paragraph reads: "For each attribute defined on the 
interface, there must be a corresponding property either on the 
interface prototype object or on every object that implements the 
interface, unless…"

The following paragraph goes on to define what is on the prototype 
object and what goes on every object that implements the interface. Just 
reading that paragraph, it'd appear that the implementation has a choice 
as to where attributes can be placed (leading to misinformation, when 
the answer to that question is seeked without reading the entire 
specification).

It'd seem preferable that the specification said something like, "For 
each attribute defined on the interface, there must be a corresponding 
property either on the interface prototype object or on every object 
that implements the interface, *depending on the [Unforgeable] extended 
attribute as defined below,* unless…".

Alternatively, a more radical change would be to change it to:

"For each attribute defined on the interface, there must be a 
corresponding property, unless:

the identifier of the attribute is “constructor”; or
the identifier of the attribute is “toString” and the interface has a 
stringifier.

If the attribute was declared with the [Unforgeable] extended attribute, 
then the property must exist on every object that implements the 
interface. Otherwise, it must exist on the interface’s interface 
prototype object."

This avoids the duplication of the constraint, and keeps the requirement 
as to where the attribute must be placed in one place, both of which 
seem like reasonable goals.

-- 
Geoffrey Sneddon — Opera Software
<http://gsnedders.com>
<http://opera.com>

Received on Sunday, 17 July 2011 19:47:39 UTC