Pensando agli array appena introdotti, cerchiamo di immagine un livello più profondo, dove ad essere conservati sono più dati con strutture e tipi diversi. Gli oggetti nascono per questo motivo: raggruppare in modo arbitrario una collezione di proprietà che possiamo definire a piacimento:
All’interno delle parentesi graffe { } possiamo elencare tutta una serie di proprietà separate da virgola: ogni proprietà ha un nome seguito dai due punti : e un valore iniziale. Ricordiamoci di non usare nomi riservati o spazi per indicare il nome di una proprietà! Si dice che un oggetto, in Javascript è una collezione di named values, cioè di coppie nome-valore.
Proprietà
Come abbiamovisto, abbiamo attinto a svariati tipi di proprietà per rappresentare una ideale partita di calcetto, con una proprietà che indica il giorno della settimana (come stringa), un’altra proprietà giocatori con un array con i nomi dei giocatori, un Boolean con lo stato della vittoria, e due interi con gol fatti e subiti. Quello visto in questo esempio, riguarda la creazione di un oggetto letterale, cioè quando lo definiamo mentre lo creiamo.
Ricordate che chiamando una proprietà che non esiste otterremmo il solito undefined .
Dall’esterno possiamo naturalmente cambiare il valore di una proprietà proprio come facciamo per una normale variabile, cioè usando l’assegnazione con = . Come per gli array, possiamo anziché usare il .nomeProprietà per accedere ad un valore, usare le parentesi quadre [nomeProprietà] :
Se volessimo controllare se un dato oggetto possiede una certa proprietà, Javascript offre l’operatore in , che restituisce true o false :
I metodi
Abbiamo già usato in precedenza metodi di oggetti pre-costituiti come l’oggetto Math . È venuto il momento di definire un nostro oggetto, con le sue caratteristiche. Per prima cosa, proviamo a capire come definire un metodo: i metodi sono delle proprietà che contengono una funzione e non un semplice valore. Vediamo un esempio:
Il metodo che definiamo deve eseguire un’operazione. In questo caso abbiamo creato il metodo accendiTergicristalli e l’abbiamo chiamato passandogli il parametro velocita . Proprio come una normale funzione. Questa speciale funzione però, opera da metodo dell’oggetto automobile e non è possibile chiamarla direttamente. Possiamo quindi aggiungere che in Javascript un oggetto è un insieme di coppie nome-valore, di metodi e proprietà.