discutiamo sto risultato asieme un attimo??

codice:
	var a = [];
	a[0] = "a";
	a[1] = "b";
/* [!!!] la prossima riga è molto importante. Infatti, per il modo in cui viene numerata (uso della stringa "public" invece che un numero), essa finisce per essere una proprietà pubblica dell'array inteso come oggetto e non conta come elemento dell'array inteso in senso classico! 
*/
	a["public"] = "variabile pubblica dell'oggetto Array";
	alert("a.length: " + a.length) // stampa 2 - ma gli elementi registrati sono 3!!
	// stampo la proprietà dell'oggetto che "non appartiene" all'array!! 
	alert(a.public) // esso è in effetti presente
Come inquadrate il fenomeno?

1 - sembra che usando una stringa al posto di un numero come indice dell'array si passi dalla modalità "array" a quella "oggetto" (di cui in egffetti gli array sono un sottoinsieme in javascript).

2 - quindi gli array associativi non sono supportati dfal linguaggio?