On 3/11/2011 7:07 AM, Claus Reinke wrote:
I believe it is very very important that the ECMAScript standard specify that
when a new
Object is created, for..in iteration traverses properties in the order they are
added,
regardless of whether the properties are numeric or not.
Some users might prefer 'in the order of keys'. That is predictable,
and allows for efficient implementation (both sparse and dense).
This:
1. breaks completely with the de-facto standard.
2. still requires the verbose, high allocation cost data formats previously explained in order
to define an in-order map
3. prevents the use of Object literals in JSON to convey ordered data
A SortedMap collection for JavaScript would be great, and useful for certain types of code.
But it doesn't help with the problems I'm pointing out.
Most of these are just awkward ways of saying "this
is the order I want" and "I also want hashmap access". So why not write that
out explicitly,
with an optional ordering parameter, making the enumeration explicit
when the default ordering isn't suitable:
selectControl.setOptions({
storedValue1 : "displayValue1",
storedValue2 : "displayValue2",
storedValue3 : "displayValue3"
},['storedValue1','storedValue2','storedValue3'])
Because this is spectacularly bad in all the ways I previously mentioned: even more redundancy
than the prior worst option, even more allocation and GC load.
It may seem convenient if keys happen to be enumerated in the order they are
written, but if
that extends to the order of insertion, things get complicated (if you delete
an entry, then
reinsert it, has it lost "its" position? do you want an "insert before"?).
There are several clear behaviors to choose from here (eg Java's LinkedHashMap).
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss