Mark,
I don't want to argue about the specific invarients you listed.  They generally 
make sense.  However I don't believe that they are as firmly embedded in the 
fabric of ES as your believe.

Prior, to ES5 attribute value were not reified and there were no way for ES 
code to specify attribute values for properties.  I believe (I'm where where I 
can't check) that [[DefineOwnProperty]] didn't exist prior to ES5.  Argurably 
Host objects were not required to even have property attributes.  They simply 
needed to provide [[PUT/Get]] behaviors and there were minimal constraints on 
what they implemented. Some widely used host objest (DOM NodeList) have 
behaviors that are tough to match to the normal interpretation of the 
attributes.

In ES5 we added [[DefineOwnProperty]] as an internal method and incorporated 
into it the attribute transtion rules you quoted.  However as an internal 
method it can have other "native" implementations that implement other rules.  
I don't believe there is any contrary spec. language.  We did put in the host 
object invarients but I don't believe we actually talked about expanding there 
applicability to all objects.

I'm not saying it is necessarily a bad idea.  I just don't think it is implicit 
in ES5.

Allen





_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to