PROGRAMMIAMO
JS - Costruttori di oggetti
Costruttori di oggetti (prototipi)

Abbiamo già accennato al fatto che JS prevede molti modi diversi per creare un oggetto. Sempre con riferimento a un oggetto che rappresenta un punto sul piano, si consideri l'esempio seguente:

function Punto ()
        {
        this.x = 0;
        this.y = 0;

        this.distanza = function()
            {
            var dist;
            dist = Math.sqrt(this.x*this.x + this.y*this.y)
            return dist;
            }
        }

var punto = new Punto();

In questo caso la dichiarazione dell'oggetto viene divisa in due parti. Prima viene definita una funzione Punto() detta costruttore o prototipo dell'oggetto.

L'oggetto vero e proprio viene creato con la parola chiave new nell'istruzione:

var punto = new Punto();

Possiamo considerare la funzione costruttore Punto() come una sorta di modello in base al quale viene poi creato l'oggetto stesso. Per esempio potremmo creare due oggetti con la stessa struttura semplicemente ripetendo:

var punto1 = new Punto();
var punto2 = new Punto();

In questo modo punto1 e punto2 sono due oggetti fatti nella stessa maniera, cioè contenenti le stesse proprietà e gli stessi metodi.

E' anche interessante osservare come viene definito il metodo distanza all'interno del costruttore Punto():

 this.distanza = function()
     {
     var dist;
     dist = Math.sqrt(this.x*this.x + this.y*this.y)
     return dist;
     }

Si noti l'uso singolare della parola chiave function() usata a destra di un uguale di assegnazione, allo scopo di assegnare a this.distanza il codice del metodo da eseguire.

Si osservi come questo modo di dichiarare una funzione, sia quello già visto in generale, che tratta le funzioni "come se fossero delle variabili":

var quadrato = function(x)
            {
            return x*x;
            }

Infine consideriamo il seguente ultimo esempio, il quale fa uso di un costruttore con parametri, cioè di un costruttore mediante il quale è possibile assegnare valori iniziali alle proprietà x e y dell'oggetto:

function Punto (xx,yy)
        {
        this.x = xx;
        this.y = yy;

        this.distanza = function()
            {
            var dist;
            dist = Math.sqrt(this.x*this.x + this.y*this.y)
            return dist;
            }
        }

var punto = new Punto(2,3);

Vedremo fra poco come questa modalità di creazione di un oggetto attraverso una funzione costruttore e la parola chiave new sia molto utile per comprendere gli oggetti predefiniti in JS.

Classi in Javascript E6 e E7

Le nuove versioni del linguaggio JS (ECMAScript6 del 2015 e ECMAScript7 del 2016) hanno introdotto anche in JS (come in C++ e linguaggi simili) l'operatore Class per la definizione di classi. Per esempio con la nuova sintassi il prototipo della classe Punto diventerebbe:

Class Punto
        {
        constructor() {
                this.x = 0;
                this.y = 0;
                }

       distanza()
            {
            var dist;
            dist = Math.sqrt(this.x*this.x + this.y*this.y)
            return dist;
            }
        }

var punto = new Punto();

 

precedente - successiva

Sito realizzato in base al template offerto da

http://www.graphixmania.it