Tipi di riferimento in Javascript

Il linguaggio di programmazione JavaScript, oltre a consentire l'uso di oggetti predefiniti o incorporati, mi offre anche la possibilità di creare nuovi tipi di oggetti personalizzati.

Per definire un nuovo tipo di oggetto, devo fornire schemi che indicano a JavaScript come dovrebbe apparire l'oggetto, quali sono i suoi metodi e proprietà, e così via.

Questi schemi sono detti 'tipi di riferimento' (o Reference Types) e servono come modelli per la costruzione degli oggetti.

Nota. A differenza di altri linguaggi di programmazione orientati agli oggetti, come Java e C++, JavaScript non prevede una costruzione di classe formale. Tuttavia, l'equivalente logico, i 'tipi di riferimento', è pienamente supportato dal linguaggio. Quindi, quando si parla di 'tipi di riferimento', si intende qualcosa molto simile alle classi in altri linguaggi.

Ogni tipo di riferimento si compone di tre elementi principali:

  • Costruttore
    Il costruttore è un metodo invocato ogni volta che viene generato un nuovo oggetto basato su questo tipo di riferimento. È utile per inizializzare le proprietà dell'oggetto o per configurarlo in un determinato modo. Come le funzioni, un costruttore può ricevere o meno dei parametri in ingresso.
  • Metodi
    I metodi rappresentano le funzionalità che possono essere applicate agli oggetti di un dato tipo di riferimento. Mi permettono di eseguire compiti specifici sugli oggetti, senza dover creare delle funzioni ad hoc.
  • Proprietà
    Le proprietà di un oggetto rappresentano le informazioni memorizzate al suo interno. L'utilizzo di proprietà elimina la necessità di definire variabili separate per contenere queste informazioni.

    Creare un tipo di riferimento

    Prima di tutto devo definire il tipo di riferimento che voglio creare.

    Ecco un esempio pratico.

    1. <script>
    2. // creo il tipo di riferimento
    3. function person (name, lastname, age) {
    4. this.firstName = name;
    5. this.lastName=lastname;
    6. this.age=age;
    7. };
    8. // creo una istanza
    9. var cliente = new person ("Paolo", "Rossi", 25);
    10. document.write(cliente.firstName);
    11. </script>

    In questo caso creo un tipo di riferimento "person" composto da tre proprietà (firstName, lastName, age).

    Poi invoco il tipo di riferimento per istanziare un oggetto "cliente" al tipo di riferimento "person" tramite la chiave new

    var cliente = new person ("Paolo", "Rossi", 25)

    Nell'istanza passo al tipo di riferimento tre parametri ("Paolo", "Rossi", "25") che saranno assegnati rispettivamente alle proprietà (firstName, lastName, age).

    Infine, interrogo l'oggetto per leggere il contenuto della proprietà "firstName"

    document.write(cliente.firstName)

    Lo script accede alla proprietà "firstName" dell'oggetto "cliente" e stampa a video il suo contenuto ossia "Paolo"

    Paolo

    In questo modo posso accedere a qualsiasi proprietà dell'oggetto.

    Esempio 2

    Nel precedente sempio ho usato tre proprietà e nessun metodo nel tipo di riferimento.

    Ora provo a implementare anche un metodo.

    1. <script>
    2. // creo il tipo di riferimento
    3. function person (name, lastname, age) {
    4. this.firstName = name;
    5. this.lastName=lastname;
    6. this.age=age;
    7. this.getName = function()
    8. {
    9. return this.firstName;
    10. }
    11. };
    12. // creo una istanza
    13. var cliente = new person ("Giuseppe", "Verdi", 54);
    14. document.write(cliente.getName());
    15. </script>

    In questo caso script ho aggiunto il metodo getName che si limita a restituire il valore assegnato alla proprietà "firstName"

    Poi invoco il metodo

    document.write( cliente.getName() );

    Il metodo legge e restituisce il valore assegnato alla proprietà "firstName"

    Giuseppe

    Esempio 3

    Posso definire un metodo anche all'esterno del tipo di riferimento.

    1. <script>
    2. // creo il tipo di riferimento
    3. function person (name, lastname, age) {
    4. this.firstName = name;
    5. this.lastName=lastname;
    6. this.age=age;
    7. };
    8. person.prototype.getName2 = function()
    9. {
    10. return this.firstName;
    11. }
    12. // creo una istanza
    13. var cliente = new person ("Giuseppe", "Verdi", 54);
    14. document.write(cliente.getName2());
    15. </script>

    Il risultato finale è sempre lo stesso.

    document.write( cliente.getName2() );

    Il metodo legge e restituisce il valore assegnato alla proprietà "firstName"

    Giuseppe

    E così via.

     


     

    Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

    FacebookTwitterLinkedinLinkedin
    knowledge base

    Programmazione a oggetti in Javascript