iteration order for Object

Charles Kendrick charles at
Thu Mar 10 18:18:53 PST 2011

Boris, this is why I also took care to mention that iteration on Arrays should remain 
unordered, so that developers doing relatively obscure things like crypto evoting in JavaScript 
(the use case in the first bug) still have access to a dense-array implementation.

Best of both worlds: Object does what you would expect, Array has optimizations for obscure use 

Last point below.

== Objections and counter-arguments

1. Array iteration order has always been inconsistent across browsers

Yes, this is true.  I am proposing only that Object preserves insertion order, not Array.

No developers or sites rely on Array iteration order, since it was never consistent.

If Array iteration continues to be unordered, any developer that cares about the tiny
performance difference can use an Array to store non-numeric property/value pairs.

On 3/10/2011 6:11 PM, Boris Zbarsky wrote:
> On 3/10/11 9:00 PM, Charles Kendrick wrote:
>> People use Objects as classes, instances, "associative arrays" / Maps,
>> etc. Numeric keys are a tiny minority and there would be no measurable
>> performance gains for special treatment of such keys *on Object*.
> You may want to read <> and
> <>. People are running into performance
> issues due to lack of such special treatment today.
> Now maybe these people are just doing dumb things they shouldn't be doing, but that doesn't
> make the performance differences observed on those tests "not measurable".
>> However because frameworks have to deal with all possible keys, we end
>> up with a much, much more expensive data structure that has to be used
>> just because numeric keys are being treated specially.
> I agree this is an issue. I just think you're underestimating the performance drag of
> preserving numeric property order for vanilla Objects.
> -Boris

More information about the es-discuss mailing list