The bug isn't in Ext, it's in the misuse of the Array class. If you look at the functions on the Array object they all work with indexes. Arrays themselves do not support string keys. When you add string key'ed properties, do you notice the length doesn't change? You can't slice or pop or splice them?

However, every object in JavaScript supports dynamic expando properties. When you make a call like this:

arrayX['key1'] = 'foo';

you are not doing anything with the Array class, which is why the Array functions don't work on that value. You are simply assigning an expando to that JavaScript object. In fact, arrayX.key1 = 'foo'; does exactly the same thing.

If all you want is a JavaScript object to add expandos to, the syntax is almost identical:

arrayX = {};
arrayX['key1'] = 'foo';
arrayX['key2'] = 'bar';

Lastly, why is this in BUGS?? If you want to discuss something that Ext is doing that you don't agree with, put it in the general discussion forum. That doesn't mean it's a bug.

if you're going to iterate through a js Array using for..in as opposed to the traditional subscript operator, i'd strongly advise using the built-in Object.prototype.hasOwnProperty method to guard against js libraries which tack on stuff to the Array prototype.