PROGRAMMIAMO
JS - Gerarchie di oggetti
Nested objects

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:

var segmento = {
                        punto1:
                                {
                                x:0,
                                y:0
                                },

                        punto2:
                                {
                                 x:0,
                                 y:0
                                },

                        lunghezza: function()
                        {
                        var lung;
                        lung = Math.sqrt((this.punto2.x-this.punto1.x)*(this.punto2.x-this.punto1.x) +
                                             (this.punto2.y-this.punto1.y)*(this.punto2.y-this.punto1.y))
                        return lung;
                        }
                        }

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:

segmento.punto1.x = document.getElementById("x1").value;
segmento.punto1.y = document.getElementById("y1").value;
segmento.punto2.x = document.getElementById("x2").value;
segmento.punto2.y = document.getElementById("y2").value;
document.getElementById("ris").value = segmento.lunghezza();

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:

 

 

precedente - successiva

Sito realizzato in base al template offerto da

http://www.graphixmania.it