Object

class Object extends Any

Object ist die Basisklasse, von der sich andere AutoHotkey-Objektklassen ableiten. Jede Object-Instanz besteht aus einem Satz "eigener Eigenschaften" und einem Basisobjekt, von dem weitere Eigenschaften geerbt wurden. Objects haben auch Methoden, aber das sind eigentlich nur Eigenschaften, die aufgerufen werden können.

Es gibt Werteigenschaften und dynamische Eigenschaften. Werteigenschaften enthalten lediglich einen Wert. Dynamische Eigenschaften enthalten keinen Wert, sondern rufen je nach Zugriffsart (Get, Set oder Call) eine Akzessorfunktion auf.

"Obj" wird hier stellvertretend für eine beliebige Instanz der Object-Klasse verwendet.

Alle Object-Instanzen basieren auf Object.Prototype, das wiederum auf Any.Prototype basiert. Zusätzlich zu den von Any geerbten Methoden und Eigenschaften haben Objects die folgenden vordefinierten Methoden und Eigenschaften.

Inhaltsverzeichnis

Statische Methoden

Call

Erstellt ein neues Object.

Obj := Object()
Obj := Object.Call()

Methoden

Clone

Gibt eine flache Kopie eines Objekts zurück.

Klon := Obj.Clone()

Jede Eigenschaft oder Methode des Objekts wird in den Klon kopiert. Objektreferenzen werden kopiert (wie bei einer normalen Zuweisung), nicht die Objekte selbst, d.h. wenn eine Eigenschaft eine Referenz enthält, die auf ein Objekt verweist, wird der Klon eine Referenz enthalten, die auf dasselbe Objekt verweist.

Dynamische Eigenschaften werden kopiert, nicht indirekt aufgerufen.

Der Klon hat dasselbe Basisobjekt wie das Originalobjekt.

Es wird ein TypeError ausgelöst, wenn Obj von einem nicht unterstützten internen Typ abgeleitet ist. Diese Implementierung von Clone unterstützt Object-, Class- und Error-Objekte. Siehe auch: Clone (Array), Clone (Map).

DefineProp

Definiert eine neue eigene Eigenschaft.

Obj := Obj.DefineProp(Name, Deskriptor)

Parameter

Name

Typ: Zeichenkette

Der Name der Eigenschaft.

Deskriptor

Typ: Objekt

Ein Objekt mit einer der folgenden eigenen Eigenschaften, oder mit Get und Set:

Get: Ein Funktionsobjekt, das aufgerufen wird, wenn der Wert der Eigenschaft abgerufen wird.

Set: Ein Funktionsobjekt, das aufgerufen wird, wenn der Eigenschaft ein Wert zugewiesen wird. Der zweite Parameter ist der Wert, der zugewiesen wird.

Call: Ein Funktionsobjekt, das aufgerufen wird, wenn die Eigenschaft aufgerufen wird.

Value: Ein beliebiger Wert, der der Eigenschaft zugewiesen wird.

Rückgabewert

Typ: Objekt

Diese Methode gibt das Zielobjekt zurück.

Bemerkungen

Diese Methode kann verwendet werden, um eine Werteigenschaft in eine dynamische Eigenschaft umzuwandeln oder umgekehrt, aber es ist nicht möglich, sowohl einen Wert als auch Akzessorfunktionen anzugeben.

Wenn eine der Akzessorfunktionen weggelassen wird, wird das Verhalten von einem Basisobjekt geerbt.

Bei Methoden ist this (das Zielobjekt) der erste Parameter von Get, Set oder Call. Bei Set ist value der zweite Parameter (der Wert, der zugewiesen wird). Diese Parameter werden automatisch von Methoden- und Eigenschaftsdefinitionen innerhalb einer Klasse definiert, müssen aber bei der Verwendung von normalen Funktionen explizit definiert werden. Alle weiteren Parameter, die vom Aufrufer übergeben werden, werden an die Parameterliste angefügt.

Die MaxParams- und IsVariadic-Eigenschaft der Funktionsobjekte werden evaluiert, um festzustellen, ob die Eigenschaft Parameter akzeptieren kann. Wenn MaxParams 1 bei Get oder 2 bei Set ist und IsVariadic False oder undefiniert ist, kann die Eigenschaft keine Parameter akzeptieren; stattdessen werden sie an die __Item-Eigenschaft des von Get zurückgegebenen Objekts weitergeleitet.

DeleteProp

Entfernt eine eigene Eigenschaft aus einem Objekt.

EntfernterWert := Obj.DeleteProp(Name)

Parameter

Name

Typ: Zeichenkette

Der Name einer Eigenschaft.

Rückgabewert

Typ: Beliebig

Diese Methode gibt den Wert der entfernten Eigenschaft zurück (leer, wenn es keinen gibt).

GetOwnPropDesc

Gibt einen Deskriptor für eine bestimmte eigene Eigenschaft zurück, der mit DefineProp kompatibel ist.

Deskriptor := Obj.GetOwnPropDesc(Name)

Parameter

Name

Typ: Zeichenkette

Der Name einer Eigenschaft.

Rückgabewert

Typ: Objekt

Bei einer dynamischen Eigenschaft ist der Rückgabewert ein neues Objekt mit einer eigenen Eigenschaft pro Akzessorfunktion: Get, Set, Call. Jede Eigenschaft ist nur vorhanden, wenn die entsprechende Akzessorfunktion in Obj selbst definiert ist. Bei einer Werteigenschaft ist der Rückgabewert ein neues Objekt mit einer Eigenschaft namens Value. In solchen Fällen gilt: Obj.GetOwnPropDesc(Name).Value == Obj.%Name%.

Das Ändern des zurückgegebenen Objekts hat keinen Einfluss auf Obj, es sei denn, DefineProp wird aufgerufen.

Fehlerbehandlung

Es wird ein PropertyError ausgelöst, wenn Obj keine Eigenschaft mit diesem Namen hat. Das Skript kann ermitteln, ob eine Eigenschaft dynamisch ist, indem es not Deskriptor.HasProp("Value") prüft, wobei Deskriptor der Rückgabewert von GetOwnPropDesc ist.

HasOwnProp

Gibt 1 (true) zurück, wenn ein Objekt eine Eigenschaft mit einem bestimmten Namen besitzt, andernfalls 0 (false).

HatEigeneEigenschaft := Obj.HasOwnProp(Name)

Die Standardimplementierung dieser Methode ist auch als Funktion definiert: ObjHasOwnProp(Obj, Name).

OwnProps

Enumeriert die eigenen Eigenschaften eines Objekts.

For Name , Wert in Obj.OwnProps()

Diese Methode gibt einen neuen Enumerator zurück. Der Enumerator wird typischerweise direkt an eine For-Schleife übergeben, die den Enumerator pro Schleifenwiederholung einmal aufruft. Jeder Aufruf des Enumerators gibt den nächsten Eigenschaftsnamen und/oder Wert zurück. Die Variablen der For-Schleife entsprechen den folgenden Parametern des Enumerators:

Name

Typ: Zeichenkette

Der Name der Eigenschaft.

Wert

Typ: Beliebig

Der Wert der Eigenschaft.

Wenn die Eigenschaft eine Getter-Methode hat, wird sie aufgerufen, um den Wert zu ermitteln (es sei denn, Wert wird weggelassen).

Dynamische Eigenschaften sind in der Enumeration enthalten. Allerdings:

Um eigene Eigenschaften zu enumerieren, ohne Eigenschafts-Getter aufzurufen, oder um alle Eigenschaften unabhängig vom Typ zu enumerieren, übergeben Sie nur eine einzige Variable an die For-Schleife oder den Enumerator. GetOwnPropDesc kann verwendet werden, um Werteigenschaften von dynamischen Eigenschaften zu unterscheiden und gleichzeitig den Wert oder Getter/Setter/Methode abzurufen.

Methoden werden typischerweise von der Enumeration im Zwei-Parameter-Modus ausgeschlossen, da die Auswertung der Eigenschaft normalerweise davon abhängt, ob das Objekt einen entsprechenden Getter oder Wert hat, entweder im selben Objekt oder in einem Basisobjekt. Um Inkonsistenzen bei zwei angegebenen Variablen zu vermeiden, überspringt OwnProps eigene Eigenschaften, die nur eine Call-Akzessorfunktion haben. Zum Beispiel:

Die Standardimplementierung dieser Methode ist auch als Funktion definiert: ObjOwnProps(Obj).

Eigenschaften

Base

Ermittelt oder setzt das Basisobjekt eines Objekts.

AktuelleBasisObj := Obj.Base
Obj.Base := NeueBasisObj

NeueBasisObj muss ein Object sein.

Wenn die Zuweisung der neuen Basis den nativen Typ des Objekts ändert, wird eine Ausnahme ausgelöst. Der native Typ eines Objekts wird vom nächstgelegenen Prototypobjekt einer internen Klasse bestimmt, wie z.B. Object.Prototype oder Array.Prototype. Zum Beispiel muss eine Array-Instanz immer von Array.Prototype ableiten, entweder direkt oder indirekt.

Eigenschaften und Methoden werden dynamisch vom Basisobjekt geerbt, d.h. beim Ändern der Basis eines Objekts ändert sich auch die Verfügbarkeit von geerbten Eigenschaften und Methoden.

Diese Eigenschaft wurde von Any geerbt, kann aber nur bei Object-Instanzen gesetzt werden.

Siehe auch: ObjGetBase, ObjSetBase

Funktionen

ObjSetBase

Setzt das Basisobjekt eines Objekts.

ObjSetBase(Obj, BasisObj)

Es werden keine Metafunktionen oder Eigenschaftsfunktionen aufgerufen. Das Überschreiben der Base-Eigenschaft hat keinen Einfluss auf das Verhalten dieser Funktion.

Es wird eine Ausnahme ausgelöst, wenn Obj oder BasisObj vom falschen Typ ist.

Siehe auch: ObjGetBase, Base-Eigenschaft

ObjOwnPropCount

Gibt die Anzahl der eigenen Eigenschaften eines Objekts zurück.

Anzahl := ObjOwnPropCount(Obj)

ObjSetCapacity

Setzt die aktuelle Kapazität des internen Arrays eigener Eigenschaften des Objekts.

MaxEigenschaften := ObjSetCapacity(Obj, MaxEigenschaften)

Parameter

MaxEigenschaften

Typ: Integer

Die neue Kapazität. Wenn dieser Parameter kleiner als die aktuelle Anzahl eigener Eigenschaften ist, wird dieser Wert stattdessen verwendet und ungenutzter Speicher freigegeben.

Rückgabewert

Typ: Integer

Diese Methode gibt die neue Kapazität zurück.

Fehlerbehandlung

Es wird eine Ausnahme ausgelöst, wenn Obj vom falschen Typ ist.

ObjGetCapacity

Gibt die aktuelle Kapazität des internen Eigenschaften-Arrays des Objekts zurück.

MaxElemente := ObjGetCapacity(Obj)

Es wird eine Ausnahme ausgelöst, wenn Obj vom falschen Typ ist.