(function foo(){}).propertyIsEnumerable("prototype"): true or false?

Allen Wirfs-Brock Allen.Wirfs-Brock at microsoft.com
Fri Sep 4 11:54:28 PDT 2009

I did some digging and I can't find any specific record of this decisions but it was probably briefly discussed at the Sept. 2008 TC39 meeting in Redmond as the change first appears in a set of changes prepared by Mark Miller that are labeled "post-redmond".

I think this is a good change that should stand as is.

Given that, there is variance between IE and FF, and also between FF/Chrome and Safari/Opera it seems very unlikely that any interoperable code depends upon this enumerability, one way or another.

It should however be listed Annex E.


>-----Original Message-----
>From: P T Withington [mailto:ptw at pobox.com]
>Sent: Friday, September 04, 2009 11:34 AM
>To: Brendan Eich
>Cc: Allen Wirfs-Brock; Mark S. Miller; es-discuss at mozilla.org
>Subject: Re: (function foo(){}).propertyIsEnumerable("prototype"): true
>or false?
>On 2009-09-04, at 13:24, Brendan Eich wrote:
>> I hope it doesn't break anything on the web. It could, because using
>> for-in to inspect properties and extend base objects with copies of
>> them is standard practice (Doug's "Swiss inheritance", search for
>> "Swiss" in http://www.cosmik.com/aa-october99/stan_freberg.html).
>One small datapoint:  OpenLaszlo does not expect enumerability of
>function prototypes.  We learned by trial and error that browsers
>varied and work around that for both inspecting and extending.

More information about the es-discuss mailing list