class Object extends Any
Objectは、他のAutoHotkeyのオブジェクトクラスが派生する基本クラスです。Objectの各インスタンスは、「自身のプロパティ」のセットと、より多くのプロパティが継承されるベースオブジェクトから構成されています。オブジェクトにもメソッドがありますが、これは呼び出すことができるプロパティにすぎません。
バリュープロパティとダイナミックプロパティがあります。バリュープロパティは、単に値を含むだけである。ダイナミックプロパティは値を持たず、アクセス方法(get、set、call)に応じてアクセッサ関数を呼び出します。
以下、"Obj" はObjectクラスのインスタンスを表すプレースホルダーとして使用します。
ObjectのインスタンスはすべてObject.Prototype
に基づいており、これはAny.Prototype
に基づいている。Anyから継承されるメソッドやプロパティに加え、Objectsは以下のような定義済みのメソッドやプロパティを持ちます。
新しいObjectを作成します。
Obj := Object()
Obj := Object.Call()
オブジェクトのシャローコピーを返す。
Clone := Obj.Clone()
オブジェクトが所有する各プロパティやメソッドは、クローンにコピーされます。オブジェクトの参照がコピーされるのであって、オブジェクトそのものがコピーされるわけではありません。言い換えれば、プロパティにオブジェクトへの参照が含まれている場合、クローンには同じオブジェクトへの参照が含まれます。
ダイナミックプロパティはコピーされ、呼び出されることはありません。
クローンは、元のオブジェクトと同じベースオブジェクトを持ちます。
A TypeError is thrown if Obj is derived from an unsupported built-in type. This implementation of Clone supports Object, Class and Error objects. こちらもご覧ください:Clone (Array), Clone (Map).
新しい自身のプロパティを定義する。
Obj := Obj.DefineProp(Name, Descriptor)
型:文字列
プロパティの名前です。
型:Object
以下のいずれかの自プロパティを持つオブジェクト、またはGetとSetの両方を持つオブジェクト:
Get: The function object to call when the property's value is retrieved.
Set: The function object to call when the property is assigned a value. その第2パラメータは、割り当てられる値である。
Call: The function object to call when the property is called.
Value: Any value to assign to the property.
型:Object
This method returns the target object.
この方法は、バリュープロパティをダイナミックプロパティに、またはその逆に変換するために使用することができますが、バリューとアクセッサ関数の両方を指定することはできません。
アクセサー関数を省略した場合、動作はベースオブジェクトから継承されます。
これ
に新しい値を格納するアクセッサ関数のセットと同等です。新しい値は、これ
自体の動的プロパティを上書きし、継承されたアクセッサ関数を上書きすることに注意してください。メソッドと同様に、Get、Set、Callの第1パラメータはthis
(対象オブジェクト)です。Setの場合、第2パラメータはvalue
(割り当てられる値)です。これらのパラメータは、クラス内のメソッドやプロパティ定義によって自動的に定義されますが、通常の関数を使用する場合は明示的に定義する必要があります。呼び出し元から渡された他のパラメータは、パラメータリストに追加されます。
The MaxParams and IsVariadic properties of the function objects are evaluated to determine whether the property may accept parameters. If MaxParams is 1 for Get or 2 for Set and IsVariadic is false or undefined, the property cannot accept parameters; they are instead forwarded to the __Item property of the object returned by get.
オブジェクトから自身のプロパティを削除する。
RemovedValue := Obj.DeleteProp(Name)
型:文字列
プロパティ名です。
型:任意
This method returns the value of the removed property (blank if none).
Returns a descriptor for a given own property, compatible with DefineProp.
Descriptor := Obj.GetOwnPropDesc(Name)
型:文字列
プロパティ名です。
型:Object
動的プロパティの場合、戻り値は、各アクセッサ関数に対応する独自のプロパティを持つ新しいオブジェクトになります:Get, Set, Call. 各プロパティは、対応するアクセサー関数がObj自身に定義されている場合にのみ存在します。For a value property, the return value is a new object with a property named Value. このような場合、Obj.GetOwnPropDesc(Name).Value == Obj.%Name%
.
返されたオブジェクトを変更しても、DefinePropが呼び出されない限り、Objには何の影響もない。
Objがその名前のプロパティを所有していない場合、PropertyErrorが投げられる。スクリプトは、not desc.HasProp("Value")
をチェックすることによって、プロパティが動的かどうかを判断することができます。
Returns 1 (true) if an object owns a property by the specified name, otherwise 0 (false).
HasOwnProp := Obj.HasOwnProp(Name)
また、このメソッドのデフォルトの実装は、関数として定義されています:ObjHasOwnProp(Obj, Name)
.
オブジェクト自身のプロパティを列挙する。
For Name , Value in Obj.OwnProps()
This method returns a new enumerator. 列挙子は通常、forループに直接渡され、ループの反復ごとに列挙子を1回呼び出します。列挙者を呼び出すたびに、次のプロパティ名や値が返されます。forループの変数は、列挙者のパラメータに対応しており、次のようになっています。
ダイナミックプロパティは、列挙に含まれます。但し:
注:メソッド定義で定義されたプロパティは、通常ゲッターを持たないため、スキップされます。
プロパティゲッターを呼ばずに自分のプロパティを列挙したり、型に関係なくすべてのプロパティを列挙するには、for-loopやenumeratorに単一の変数のみを渡します。GetOwnPropDescは、値プロパティと動的プロパティを区別するために使用でき、同時に値またはゲッター/セッター/メソッドを取得することもできます。
なぜなら、プロパティの評価は、通常、オブジェクトに対応するゲッターや値があるかどうか(同じオブジェクトかベースオブジェクトのいずれか)に依存するからです。2つの変数が指定された場合の矛盾を避けるため、OwnPropsはCallアクセサー関数のみを持つ自身のプロパティをスキップする。事例:
また、このメソッドのデフォルトの実装は、関数として定義されています:ObjOwnProps(Obj)
.
オブジェクトのベースオブジェクトを取得または設定する。
CurrentBaseObj := Obj.Base
Obj.Base := NewBaseObj
NewBaseObj must be an Object.
新しいベースを割り当てると、オブジェクトのネイティブタイプが変更される場合は、例外がスローされます。オブジェクトのネイティブタイプは、Object.Prototype
や Array.Prototype
などの組み込みクラスに属する、最も近いプロトタイプオブジェクトによって決定されます。例えば、Arrayのインスタンスは必ずArray.Prototype
から直接または間接的に派生していなければならない。
プロパティやメソッドはベースオブジェクトから動的に継承されるため、オブジェクトのベースを変更すると、継承されたプロパティやメソッドを利用できるものも変更されます。
このプロパティはAnyから継承されますが、Objectのインスタンスに対してのみ設定することができます。
こちらもご覧ください:ObjGetBase, ObjSetBase
オブジェクトのベースとなるオブジェクトを設定します。
ObjSetBase(Obj, BaseObj)
メタファンクションや プロパティファンクションは呼び出されません。Baseプロパティをオーバーライドしても、この関数の動作に影響はありません。
ObjまたはBaseObjが不正な型である場合、例外が発生します。
こちらもご覧ください:ObjGetBase, Base property
オブジェクトが所有するプロパティの数を返します。
Count := ObjOwnPropCount(Obj)
オブジェクトの内部配列である自プロパティの現在の容量を設定します。
MaxProps := ObjSetCapacity(Obj, MaxProps)
型:整数
新しい容量です。現在の自プロパティの数より少ない場合、その数が代わりに使用され、未使用のスペースは解放されます。
型:整数
This function returns the new capacity.
Objが不正な型である場合は例外が発生します。
オブジェクトの内部配列のプロパティの現在の容量を返します。
MaxItems := ObjGetCapacity(Obj)
Objが不正な型である場合は例外が発生します。