Homa Page di Daniele Franceschini
Oggetti come array
Come dicevo nell'articolo "introduzione agli oggetti javascript", attraverso l'operatore punto è possibile accedere alle proprietà di un oggetto. Tuttavia, javascript essendo un linguaggio abbastanza estroso, ci sorprende ancora in quanto oltre che all'operatore ".", è possibile accedere alle proprietà di un oggetto anche attraverso le parentesi quadre "[]". L'operatore delle parentesi quadre è normalmente utilizzato per gli array, pertanto viene da chiedersi come sia possibile distinguere le due cose? La risposta a questa domanda potrebbe essere un'altra domanda: ma è proprio necessario fare questa distinzione? E se fossero la stessa cosa? Visto che javascript riesce a creare tutte le proprietà che vuole a causa della sua debole tipizzazione, le sue proprietà possono essere create dinamicamente. Pertanto se parametrizzassimo le proprietà di un oggetto, ad esempio con un indice, attraverso un ciclo for e la notazione degli array, sarebbe possibile ciclare sulle proprietà indicizzate di quell'oggetto. Ad esempio: L'esempio precedente mostra come la notazione per gli array torni molto utile quando si deve fare questo tipo di operazioni. In realtà per colpa di queste potenzialità si potrebbero fare cose truci che non voglio neanche menzionare. In fondo questa è anche la realtà di altri linguaggi interpretati come javascript, gli manca un po' più di rigore. Forse questo è il prezzo da pagare per la semplicità e la flessibilità, quindi non lamentiamoci troppo.var shipping_address = "";
var info = new Object();
info.address0 = "via vai n°1"
info.address1 = "Piazza pozzi n°2"
info.address2 = "Viale vialone n°3"
for (i=0; i<3; i++){
shipping_address += info["address" + i] + ' - ';
}
alert(shipping_address);
Quando un oggetto viene usato in questo modo si considera come un array associativo, ossia: una struttura dati che da la possibilità di associare valori di dati arbitrari a stringhe arbitrarie. Quindi tornando alla domanda di prima: che differenza c'è fra oggetti e array in javascript? Direi ben poca, anzi internamente gli oggetti sono implementati proprio come gli array associativi.
E qui finisce tutta la poesia degli oggetti javascript.
In javascript, la notazione puntata per accedere alle parti di un oggetto, fa si che appaia come fosse un oggetto statico java, e funziona, ma in fondo come abbiamo visto è più una simulazione di un oggetto che un oggetto vero e proprio.



