Where in spec does it explain why setting the value of an existing property will change its [[Enumerable]] attribute.

Dmitry A. Soshnikov dmitry.soshnikov at gmail.com
Wed Aug 17 05:43:25 PDT 2011

It shouldn't, even in ES3 (read attentively).


On 17.08.2011 8:44, John-David Dalton wrote:
> So @kitcambridge and I were talking spec and started trying to find in
> spec something that explains why something like:
> Array.prototype.reduce which is by default  { [[Writable]]: true,
> [[Enumerable]]: false, [[Configurable]]: true } will change to
> [[Enumerable]]: true when:
> Array.prototype.reduce = function() {…};
> So far we have struck out.
> In ES3 we found [[Put]](P, V)
> http://bclary.com/2004/11/07/#a-
> and its step 4:
> 4. Set the value of the property to V. The attributes of the property
> are not changed.
> And then we dug into ES5.1 and its [[Put]]
> http://es5.github.com/#x8.12.5
> and its step step 3a which leads to [[DefineOwnProperty]] with a Desc
> of {[[Value]]: V} and its step 10b to 12, then 13.
> but couldn't find where it stated changing the [[Enumerable]] attribute.
> Would you all help point to where this is defined in spec?
> Thanks,
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss

More information about the es-discuss mailing list