E-mail on the topic: https://mail.mozilla.org/pipermail/es-discuss/2011-March/013039.html.
Reviewed copy:
------------
I think it would be worth for spec readability to give a name to the
for-in property enumeration internal method and list it as such in ES5
8.6.2 Table 8 regardless the fact that it is implementation-dependent.
>From the spec edition point of view, it would require a bit of
re-writing for the for-in statement semantics algorithm.
I have noticed that there is no mention of this internal method in
Allen's resource
(http://www.wirfs-brock.com/allen/things/es5-technial-notes-and-resources).
For the record, this internal method is "called" in (at least I haven't
found any other place):
* 12.6.4 The for-in Statement (twice)
* 15.2.3.7 Object.defineProperties
* 15.2.3.14 Object.keys
* (Indirect) 15.12.3 JSON.stringify
"The ordering of the Strings should be the same as that used by the
Object.keys standard built-in function."
It would probably help to define more easily how proxies reify
Object.keys. The 'enumerate' trap would just reify this new internal
method ( [[enumerate]]? ) and as such there would be no need to modify
the for-in statement definition as it is in
http://wiki.ecmascript.org/doku.php?id=harmony:proxies_semantics#modifications_to_the_evaluation_of_expressions_and_statements.
----------------
move to ES6 draft
In ES6 this is the [[Enumerate]] internal method