The Array object is still an object and as such it can be used as an associative array.
you will discover that length is zero. The point is that integer properties are treated differently from associative properties.
There is also no direct way of creating an associative array via a literal. for example while you can write:
This creates an object A.
If you try:
then you get an error because an Array literal can't be declared as an associative array.
declares a standard Array indexed as a="A" and so on.
just generates an error message because objects need name value pairs to initialise them.
So the argument goes that the Array object is not to be used as an associative array because it was created to act as an integer indexed array.
However things aren't quite this simple.
Consider the way that you can reference object properties following:
You can refer to property B in either of two ways A.B or A["B"]. This is strange because  is the array dereferencing operator and you can use this on any object, not just an Array object.
This confuses the issue.
However you can't refer to an array element using property notation even though the indices are stored as valid object properties. That is, A.0 doesn't work even though A does have a property called numeric zero.
The best way way to understand all this is to realize that an Array object is an associative array that has integer valued properties and this makes it special. The best advice is - don't use an Array object as a general associative array unless you need to mix string and numeric indices.
In general an Array is an array and an Object is an associative array.
The jQuery function queue is probably one of the best ideas you will ever encounter, but it hardly gets a mention. The reason is that the problem it solves isn't an obvious one and neither is the way [ ... ]