JavaScript/Oggetti: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m Update syntaxhighlight tags - remove use of deprecated <source> tags
Riga 20:
 
La sintassi quindi:
<sourcesyntaxhighlight lang=javascript>
var variabile = new nome_oggetto ();
</syntaxhighlight>
</source>
In questo modo la variabile <code>variabile</code> sarà l'unico modo per fare riferimento all'istanza di <code>nome_oggetto</code> appena creata.
 
I costruttori solitamente prevedono anche una serie di parametri per impostare automaticamente alcune proprietà dell'oggetto creato:
<sourcesyntaxhighlight lang=javascript>
var variabile = new nome_oggetto (parametri_del_costrutture);
</syntaxhighlight>
</source>
 
Supponiamo di avere a che fare con un oggetto macchina implementato in JavaScript. Per inizializzare la variabile "<code>la_mia_macchina</code>" dobbiamo dunque richiamare la funzione costruttore del prototipo macchina, che per esempio potrebbe prevedere un parametro "modello" e "colore vernice":
<sourcesyntaxhighlight lang=javascript>
var la_mia_macchina = new macchina ("Fiat Bravo", "Rosso");
</sourcesyntaxhighlight>E' possibile creare un oggetto anche assegnando a una variabile delle coppie chiave - valore:
<sourcesyntaxhighlight lang=javascript>
var oggetto = { proprieta1: valore1, proprieta2: valore2 };
</syntaxhighlight>
</source>
=== Proprietà ===
Possiamo pensare ad una proprietà come ad una variabile associata al singolo oggetto; il suo valore viene attribuito inizialmente dal costruttore e successivamente viene modificato agendo sull'oggetto (operando sui metodi, ecc...). Per fare riferimento alla proprietà (per il recupero o per l'assegnazione) si usa la sintassi:
<sourcesyntaxhighlight lang=javascript>
nome_oggetto.nome_proprietà
</syntaxhighlight>
</source>
Alcune proprietà possono essere di sola lettura, cioè il loro valore può essere letto ma non modificato: esse sono infatti legate a caratteristiche intrinseche dell'oggetto, oppure sono determinate dal prototipo in base a dati forniti in precedenza.
 
Se ad esempio riverniciamo la nostra macchina, ne cambiamo la proprietà "colore_vernice":
<sourcesyntaxhighlight lang=javascript>
la_mia_macchina.colore_vernice = "Giallo"
</syntaxhighlight>
</source>
Inoltre, supponiamo che il prototipo preveda la ricerca automatica della lunghezza della macchina in base al modello e che tale valore sia stato memorizzato nella proprietà di sola lettura "lunghezza" (infatti non è possibile intervenire sulla lunghezza della macchina, una volta scelto il modello):
<sourcesyntaxhighlight lang=javascript>
alert('La mia macchina è lunga ' + la_mia_macchina.lunghezza + ' m!');
</syntaxhighlight>
</source>
 
=== Metodi ===
Un metodo è una funzione associata al singolo oggetto e definito nel costruttore; se nel prototipo è prevista una funzione <code>metodo_esempio</code> sarà possibile eseguire la funzione tramite la sintassi:
<sourcesyntaxhighlight lang=javascript>
nome_oggetto.metodo_esempio () //ricordarsi le parentesi anche se non passiamo parametri!
</syntaxhighlight>
</source>
Dal momento che le funzioni possono prevedere un valore di ritorno, sarà possibile inserire la notazione vista precedentemente all'interno di un'espressione.
 
Ad esempio, con la nostra macchina:
<sourcesyntaxhighlight lang=javascript>
la_mia_macchina.rifornisci (20) //20 euro di benzina
</syntaxhighlight>
</source>
 
NOTA: l'esempio riportato non ha nulla a che vedere con le intenzioni espresse, poiché aggiunge semplicemente un parametro di ingresso al metodo, senza alcun "valore di ritorno" previsto e/o salvato. Correggere.
Riga 69:
== La struttura with ==
Quando si lavora con gli oggetti, può risultare comodo il costrutto <code>with</code>, che permette di accedere più volte ad un oggetto senza dover ogni volta specificare il suo nome. Ad esempio:
<sourcesyntaxhighlight lang=javascript>
with (la_mia_macchina) {
rifornisci (20) //20 euro di benzina
Riga 75:
altra_macchina.rifornisci(50); //per riferirmi ad altri oggetti devo indicare il loro nome
} //qui si conclude il blocco with
</syntaxhighlight>
</source>
 
==Creare oggetti personalizzati==