expando-Modifizierer
Deklariert, dass Instanzen einer Klasse expando-Eigenschaften unterstützen oder dass eine Methode Konstruktor eines expando-Objekts ist.
expando statement
Argumente
- statement
Erforderlich. Die Definition einer Klasse oder Methode.
Hinweise
Mit dem expando-Modifizierer wird eine Klasse als dynamisch erweiterbar gekennzeichnet (als Klasse, die expando-Eigenschaften unterstützt). Auf die expando-Eigenschaften von Instanzen einer expando-Klasse kann nur unter Verwendung der []-Notation zugegriffen werden. Der Zugriff mit dem Punktoperator ist nicht möglich. Der expando-Modifizierer kennzeichnet eine Methode außerdem als Konstruktor eines expando-Objekts.
Mit dem expando-Modifizierer können Klassen sowie Methoden von Klassen gekennzeichnet werden. Felder, Eigenschaften, Schnittstellen und Member von Schnittstellen können nicht mit dem expando-Modifizierer gekennzeichnet werden.
Eine expando-Klasse verfügt über eine verborgene, private Eigenschaft mit der Bezeichnung Item, der ein Object-Parameter übergeben wird und die ein Object zurückgibt. In einer expando-Klasse dürfen Sie keine Eigenschaft mit dieser Signatur definieren.
Beispiel 1
Das folgende Beispiel veranschaulicht die Verwendung des expando-Modifizierers bei einer Klasse. Die expando-Klasse ist einem Object von JScript ähnlich, jedoch bestehen einige Unterschiede, die im Folgenden veranschaulicht werden:
expando class CExpandoExample {
var x : int = 10;
}
// New expando class-based object.
var testClass : CExpandoExample = new CExpandoExample;
// New JScript Object.
var testObject : Object = new Object;
// Add expando properties to both objects.
testClass["x"] = "ten";
testObject["x"] = "twelve";
// Access the field of the class-based object.
print(testClass.x); // Prints 10.
// Access the expando property.
print(testClass["x"]); // Prints ten.
// Access the property of the class-based object.
print(testObject.x); // Prints twelve.
// Access the same property using the [] operator.
print(testObject["x"]); // Prints twelve.
Ausgabe dieses Codes:
10
ten
twelve
twelve
Beispiel 2
Das folgende Beispiel veranschaulicht die Verwendung des expando-Modifizierers bei einer Methode. Wenn die expando-Methode auf die übliche Weise aufgerufen wird, greift sie auf das Feld x zu. Wenn die Methode als expliziter Konstruktor mit dem Operator new verwendet wird, fügt sie einem neuen Objekt eine expando-Eigenschaft hinzu.
class CExpandoExample {
var x : int;
expando function constructor(val : int) {
this.x = val;
return "Method called as a function.";
}
}
var test : CExpandoExample = new CExpandoExample;
// Call the expando method as a function.
var str = test.constructor(123);
print(str); // The return value is a string.
print(test.x); // The value of x has changed to 123.
// Call the expando method as a constructor.
var obj = new test.constructor(456);
// The return value is an object, not a string.
print(obj.x); // The x property of the new object is 456.
print(test.x); // The x property of the original object is still 123.
Ausgabe dieses Codes:
Method called as a function.
123
456
123
Anforderungen
Siehe auch
Referenz
Konzepte
Gültigkeitsbereich von Variablen und Konstanten