The ECMAScript 5.1 spec says (8.6.1):
[[Configurable]]: If false, attempts to delete the property, change the
property to be an accessor property, or change its attributes (other than
[[Value]]) will fail.
On the other hand [[DefineOwnProperty]] (8.12.9) allows one to change
writability from true to false, even if a property is not configurable:
10 Else, if IsDataDescriptor(current) and IsDataDescriptor(Desc) are both true,
then
a. If the [[Configurable]] field of current is false, then
i. Reject, if the [[Writable]] field of current is false and
the [[Writable]] field of Desc is true.
ii. If the [[Writable]] field of current is false, then
1. Reject, if the [[Value]] field of Desc is present
and SameValue(Desc.[[Value]], current.[[Value]]) is false.
b. else, the [[Configurable]] field of current is true, so any change
is acceptable.
(10.a) seems to ignore the case of [[Writable]] of `current` being true. Is
this deliberate?
Should the description of [[Configurable]] be changed to better reflect the
status quo?
--
Dr. Axel Rauschmayer
[email protected]
home: rauschma.de
twitter: twitter.com/rauschma
blog: 2ality.com
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss