Non è un bug. Per quanto riguarda la creazione degli oggetti, ci sono 2 sintassi per definire un membro dell'oggetto:
codice:
obj=new Object();
obj.var1='ciao'; //prima sintassi
obj["strange[var]"]='ciao2'; //seconda sintassi
chiaramente se usi la seconda sintassi hai la possibilità di inserire qualsiasi carattere perchè definisci il nome di una variabile dentro una stringa, ma se ci sono caratteri strani, non potrai poi usare la prima sintassi per accedere a quel valore.
La stesse identiche sintassi le puoi usare per definire elementi con indici sotto forma di stringa (associativi) negli Array.
codice:
arr=new Array();
arr.var1='ciao'; //prima sintassi
arr["strange[var]"]='ciao2'; //seconda sintassi
un pò come si usa sull'array elements dei form quando ci si deve riferire ad input che sono degli array
codice:
document.form.elements['inputarr[]']
ho notato inoltre che se aggiungi 10 elementi associativi ad un array, la lunghezza rilevata (arr.length) è sempre 0. Sono rilevanti solo gli elementi con indici nemerici