Originariamente inviato da nourdine
bene bene vfedo che confermi la mia posizione.
affatto, gli Array associativi (sempre che questa definizione abbia un senso) sono supportati e come
codice:
var	a = [1,2,3];
a.pippo = "pluto";
for(var key in a)
    alert(key);
risultato?
0
1
2
pippo

array associativo ... la length con gli array associativi non c'entra un granchè ... il count di PHP è questo (e PHP è stracolmo di ambiguità):
codice:
var	a = [1,2,3];
a.pippo = "pluto";


function count(Object){
	var	i = 0,
		key;
	for(key in Object)
		if(Object.hasOwnProperty(key))
			++i;
	return	i;
};

alert(count(a));	// 4
ma essendo Array un Array, e non un HashTable, e sapendo che gli array lavorano su indici numerici, qualora la length restituisse 4 contando erroneamente anche l'associazione, dato che è un Array, come potresti fare un loop ?
codice:
var	a = [1,2,3];
a.pippo = "pluto";

for(var i = 0; i < a.length; i++)
	alert(a[i]);
Ovviamente un Array deve poter essere looppato in questo modo ... perchè il foreach o for che sia, non garantisce alcun ordine, seppur sia spesso quello sperato.

Fosse come dici tu, cosa faresti per un loop di Array, questo?
codice:
for(var i = 0; a[i] !== undefined; i++)
	alert(a[i]);
e come la mettiamo con Array che hanno lenght fissata ma non necessariamente tutti i valori settati?
codice:
var a = new Array(10);
a[2] = 2;
Sunto: JavaScript supporta gli Array, chi pensa che gli Array possano essere usati come associativi (che "non esistono", sono Hash Tables) e debbano contare tutto, non creerà molto codice con gli Array veri, tanto vale che utilizza un instanza di Object