Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Istanziare matrice di oggetti

    So bene come funzionano le classi e le matrici, ma non in js, ho ancora dei dubbi a riguardo...

    Già il fatto che le matrici in js siano praticamente prese come array bidimensionali mi crea un po' di confusione, in più ho visto che anche le classi non sono creabili nel modo che conoscevo io.

    Se ad esempio ho una classe "esempio", come faccio a creare una matrice di elementi "esempio" ?

  2. #2
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    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 (...) {...}).


  3. #3
    Fantastico, grazie mille davvero

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.