Unconfigurable properties: why can I change [[Writable]] from true to false?
Tom Van Cutsem
tomvc.be at gmail.com
Mon Jun 10 06:01:14 PDT 2013
The fact that [[writable]] can change for a non-configurable property is
definitely intentional, see the state diagram MarkM once put up at <
2013/6/10 Axel Rauschmayer <axel at rauschma.de>
> 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
> (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
> axel at rauschma.de
> home: rauschma.de
> twitter: twitter.com/rauschma
> blog: 2ality.com
> es-discuss mailing list
> es-discuss at mozilla.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the es-discuss