In javascript non esistono le classi, il loro ruolo è sostituito dai costruttori. E non esistono neanche le matrici bidimensionali, possono essere solamente simulate tramite gli array, come accennavi tu. Comunque per semplificarci la vita ti faccio un esempio dell'equivalente di quello che mi chiedi con un array monodimensionale. Ci sono molti modi, prendiamo il più semplice. Creaiamo il nostro costruttore:
codice:
function Persona(sNome, sCognome, nAltezza) {
this.nome = sNome;
this.cognome = sCognome;
this.altezza = nAltezza;
this.toString = function () {
return this.nome + " " + this.cognome + " (altezza: " + this.altezza.toFixed(2) + " m)";
};
this.valueOf = function () {
return this.cognome + " " + this.nome;
};
}
quindi creiamo il nostro array:
codice:
var persone = [new Persona("Mario", "Rossi", 1.85), new Persona("Carla", "Respighi", 1.72), new Persona("Flavia", "Bianchi", 1.6)];
alert(persone.join(" -- "));
alert(persone[0].nome)
Il nome "costruttore" indica in gergo una funzione invocata con l'operatore new. Tale operatore crea al volo un oggetto vuoto e lo passa alla funzione come oggetto this. Si tratta della sintesi di una scrittura come la seguente, totalmente equivalente, ma che necessita della creazione di un passaggio in più. Quindi:
codice:
var nuovo = new Persona("Mario", "Rossi", 1.85);
alert(nuovo);
è totalmente equivalente a:
codice:
var nuovo = {}:
Persona.call(nuovo, "Mario", "Rossi", 1.85);
alert(nuovo);
Convenzione vuole che quando le funzioni debbano svolgere il ruolo di costruttori abbiano la prima lettera del nome maiuscola (es. function Persona (...) {...}).