Sdílet prostřednictvím


Erstellen eigener Objekte mit Konstruktorfunktionen

Aktualisiert: November 2007

Ein leistungsstarkes Feature von JScript besteht in der Möglichkeit, Konstruktorfunktionen zum Erstellen von benutzerdefinierten, auf Prototypen basierenden Objekten für die Verwendung in Skripts zu definieren. Um eine Instanz eines prototypbasierten Objekts zu erstellen, müssen Sie zuerst eine Konstruktorfunktion definieren. Bei diesem Prozess wird ein neues Objekt erstellt und initialisiert (Eigenschaften werden erstellt, und ein Anfangswert wird zugewiesen). Danach gibt der Konstruktor einen Verweis auf das konstruierte Objekt zurück. Innerhalb des Konstruktors wird mit der this-Anweisung auf das erstellte Objekt verwiesen.

Konstruktoren mit Eigenschaften

Im folgenden Beispiel wird eine Konstruktorfunktion für pasta-Objekte definiert. Mithilfe der this-Anweisung kann der Konstruktor das Objekt initialisieren.

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

Nachdem Sie einen Objektkonstruktor definiert haben, erstellen Sie mit dem new-Operator Instanzen des Objekts. Hier wird der pasta-Konstruktor verwendet, um die Objekte spaghetti und linguine zu erstellen.

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

Sie können einer Instanz eines Objekts dynamisch Eigenschaften hinzufügen, diese Änderungen betreffen jedoch nur diese eine Instanz.

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

Wenn Sie allen Instanzen des Objekts eine zusätzliche Eigenschaft hinzufügen möchten, ohne die Konstruktorfunktion zu verändern, können Sie die Eigenschaft dem Prototypobjekt des Konstruktors hinzufügen. Weitere Informationen finden Sie unter Erweiterte Objekterstellung (JScript).

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

Konstruktoren mit Methoden

Sie können Methoden (Funktionen) in die Definition eines Objekts einfügen. Eine Möglichkeit hierfür besteht darin, in die Konstruktorfunktion eine Eigenschaft einzufügen, die auf eine an anderer Stelle definierte Funktion verweist. Wie die Konstruktorfunktionen verweisen auch diese Funktionen mit der this-Anweisung auf das aktuelle Objekt.

Im folgenden Beispiel wird die oben definierte pasta-Konstruktorfunktion um eine toString-Methode erweitert. Diese wird aufgerufen, wenn die Funktion den Wert des Objekts anzeigt. (Im Allgemeinen verwendet JScript die toString-Methode eines Objekts, wenn das Objekt in einer Situation verwendet wird, in der eine Zeichenfolge benötigt wird. Die toString-Methode muss nur selten explizit aufgerufen werden.)

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

Ausgabe dieses Programms:

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

Siehe auch

Weitere Ressourcen

Auf Prototypen basierende Objekte

JScript-Objekte