Un oggetto può contenere al proprio interno qualsiasi cosa, come per esempio vettori e stringhe o anche un altro oggetto. Si parla in questi casi di nested objects (o oggetti annidati).
Si consideri l'esempio seguente che definisce un segmento in base alle coordinate dei due punti estremi e quindi ne calcola la lunghezza:
L'immagine seguente riassume il calcolo della lunghezza a partire dagli estremi del segmento:
Si osservi, nel codice del metodo lunghezza(), l'uso del doppio punto in this.punto2.x e similari. Il significato è che 'x' è una proprietà di 'punto2' il quale a sua volta è una proprietà dell'oggetto corrente (this), cioè di segmento. Si noti come non esista possibile confusione fra la proprietà x di punto1 e la proprietà omonima x di punto2.
E' interessante osservare come l'oggetto segmento precedentemente definito viene usato nel codice seguente:
Si noti anche in questo caso la notazione
oggetto1.oggetto2.proprietà
oggetto1.oggetto2.metodo()
usata per separare l'oggetto "principale" dal suo sotto-oggetto.
Un altro modo per considerare il problema è questo: la proprietà di un oggetto può essere un altro oggetto (il quale a sua volta può avere delle proprietà). E' evidente come in questo modo si crea una gerarchia potenzialmente infinita di oggetto-proprietà/oggetto-proprietà/oggetto....
La figura seguente dovrebbe chiarire i rapporti fra i vari elementi della nostra gerarchia di oggetti e sotto-oggetti:
Sito realizzato in base al template offerto da
http://www.graphixmania.it