Creazione di oggetti personalizzati mediante le funzioni costruttore

Aggiornamento: novembre 2007

Una caratteristica efficace di JScript consiste nella possibilità di definire funzioni costruttore per creare oggetti basati su prototipi personalizzati da utilizzare negli script. Prima di creare un'istanza di un oggetto basato su un prototipo, è necessario definire una funzione costruttore. Durante questo processo un nuovo oggetto viene creato e inizializzato creando proprietà e assegnando un valore iniziale. Al termine, il costruttore restituirà un riferimento all'oggetto costruito. All'interno del costruttore viene incluso un riferimento all'oggetto creato mediante l'istruzione this.

Costruttori dotati di proprietà

Nell'esempio illustrato di seguito viene definita una funzione costruttore per l'oggetto pasta. L'istruzione this consente al costruttore di inizializzare l'oggetto.

// pasta is a constructor that takes four parameters.
function pasta(grain, width, shape, hasEgg) {
   this.grain = grain;    // What grain is it made of?
   this.width = width;    // How many centimeters wide is it?
   this.shape = shape;    // What is the cross-section?
   this.hasEgg = hasEgg;  // Does it have egg yolk as a binder?
}

Una volta definito un costruttore dell'oggetto, è necessario creare istanze dell'oggetto stesso mediante l'operatore new. Nell'esempio, il costruttore pasta viene utilizzato per creare gli oggetti spaghetti e linguine.

var spaghetti = new pasta("wheat", 0.2, "circle", true);
var linguine = new pasta("wheat", 0.3, "oval", true);

È possibile aggiungere in modo dinamico proprietà all'istanza di un oggetto, ma tali modifiche avranno effetto solo su quella specifica istanza.

// Additional properties for spaghetti. The properties are not added
// to any other pasta objects.
spaghetti.color = "pale straw";
spaghetti.drycook = 7;
spaghetti.freshcook = 0.5;

Se si desidera aggiungere una proprietà supplementare a tutte le istanze dell'oggetto senza modificare la funzione costruttore, è possibile aggiungere tale proprietà all'oggetto prototipo del costruttore. Per ulteriori informazioni vedere Creazione avanzata di oggetti (JScript).

// Additional property for all pasta objects. 
pasta.prototype.foodgroup = "carbohydrates";

Costruttori dotati di metodi

È possibile includere metodi (funzioni) nella definizione di un oggetto. Un modo per ottenere questo risultato consiste nell'includere nella funzione costruttore una proprietà che si riferisce a una funzione definita altrove. Analogamente alle funzioni costruttore, anche queste funzioni fanno riferimento all'oggetto corrente mediante l'istruzione this.

Nell'esempio che segue, la funzione costruttore pasta definita in precedenza viene espansa in modo da includere un metodo toString che verrà chiamato quando verrà visualizzato il valore dell'oggetto. Di norma, il metodo toString di un oggetto viene utilizzato quando nel contesto in cui l'oggetto è impiegato è richiesta una stringa. In genere non è necessario chiamare il metodo toString in modo esplicito.

// pasta is a constructor that takes four parameters.
// The properties are the same as above.
function pasta(grain, width, shape, hasEgg) {
   this.grain = grain;    // What grain is it made of?
   this.width = width;    // How many centimeters wide is it?
   this.shape = shape;    // What is the cross-section?
   this.hasEgg = hasEgg;  // Does it have egg yolk as a binder?
   // Add the toString method (defined below).
   // Note that the function name is not followed with parentheses;
   // this is a reference to the function itself, not a function call.
   this.toString = pastaToString;
}

// The function to display the contents of a pasta object.
function pastaToString() {
   return "Grain: " + this.grain + "\n" +
          "Width: " + this.width + " cm\n" +
          "Shape: " + this.shape + "\n" +
          "Egg?:  " + Boolean(this.hasEgg);
}

var spaghetti = new pasta("wheat", 0.2, "circle", true);
// Call the method explicitly.
print(spaghetti.toString());
// The print statement takes a string as input, so it
//  uses the toString() method to display the properties
// of the spaghetti object.
print(spaghetti);

Verrà visualizzato il seguente output:

Grain: wheat
Width: 0.2 cm
Shape: circle
Egg?:  true
Grain: wheat
Width: 0.2 cm
Shape: circle
Egg?:  true

Vedere anche

Altre risorse

Oggetti basati su prototipi

Oggetti JScript