Partager via


Création de vos propres objets avec les fonctions constructeur

La puissance de JScript réside notamment dans sa capacité à définir des fonctions constructeurs pour créer des objets personnalisés basés sur un prototype que vous utilisez dans vos scripts. Pour créer une instance d'un objet basé sur un prototype, vous devez commencer par définir une fonction constructeur. Ce processus crée un nouvel objet et l'initialise (crée des propriétés et lui assigne une valeur initiale). À l'issue de l'opération, le constructeur retourne une référence à l'objet construit. À l'intérieur du constructeur, l'objet créé est référencé avec l'instruction this.

Constructeurs avec propriétés

L'exemple suivant définit une fonction constructeur pour des objets pasta . L'instruction this permet au constructeur d'initialiser l'objet.

// 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?
}

Après avoir défini un constructeur d'objet, vous pouvez créer des instances de cet objet à l'aide de l'opérateur new. Dans ce cas-ci, le constructeur pasta sert à créer les objets spaghetti et linguine.

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

Vous pouvez ajouter dynamiquement des propriétés à une instance d'un objet, mais ces modifications n'affectent que cette instance.

// 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;

Pour ajouter une propriété supplémentaire à toutes les instances de l'objet sans modifier la fonction constructeur, vous pouvez ajouter la propriété à l'objet prototype du constructeur. Pour plus d'informations, consultez Création d'objets avancée (Visual Studio - JScript).

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

Constructeurs avec méthodes

Il est possible d'inclure des méthodes (fonctions) dans la définition d'un objet. L'un des moyens pour y parvenir est d'inclure une propriété dans la fonction constructeur faisant référence à une fonction définie ailleurs. À l'instar des fonctions constructeurs, ces fonctions font également référence à l'objet en cours avec l'instruction this.

L'exemple suivant élargit la fonction constructeur pasta définie plus haut afin d'y inclure une méthode toString qui sera appelée si la fonction affiche la valeur de l'objet. (En général, JScript utilisera la méthode toString d'un objet lorsque ce dernier est utilisé dans un contexte exigeant une chaîne. Il est rarement nécessaire d'appeler explicitement la méthode toString.)

// 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);

Ce code produit le résultat suivant :

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

Voir aussi

Autres ressources

Objets basés sur un prototype

Objets JScript