Následující dva různé fragmenty kódu se mi zdají ekvivalentní:
var myArray = Array(); myArray['A'] = "Athens"; myArray['B'] = "Berlin";
a
var myObject = {'A': 'Athens', 'B':'Berlin'};
protože se oba chovají stejně a také typeof(myArray) == typeof(myObjects)
(oba poskytují ‘objekt’).
Je mezi těmito variantami nějaký rozdíl?
Odpověď
Prakticky vše v javascriptu je objekt, takže objekt Array můžete „zneužít“ nastavením libovolných vlastností. To by však mělo být považováno za škodlivé. Pole jsou pro numericky indexovaná data – pro nenumerické klíče použijte Object.
Zde je konkrétnější příklad, proč se nenumerické klíče „nevejdou“ do pole:
var myArray = Array(); myArray['A'] = "Athens"; myArray['B'] = "Berlin"; alert(myArray.length);
Tím se nezobrazí „2“, ale „0“ – do pole nebyly přidány žádné prvky, pouze některé nové vlastnosti přidané do objektu pole.