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)
型:文字列
プロパティの名前です。
型:オブジェクト
以下のいずれかの自プロパティを持つオブジェクト、またはGetとSetの両方を持つオブジェクト:
Get:プロパティの値が取得されたときに呼び出される関数オブジェクトです。
Set:プロパティに値が割り当てられたときに呼び出される関数オブジェクトです。その第2パラメータは、割り当てられる値である。
Call:プロパティが呼び出されたときに呼び出される関数オブジェクトです。
Value:プロパティに割り当てる任意の値。
型:オブジェクト
This method returns the target object.
この方法は、バリュープロパティをダイナミックプロパティに、またはその逆に変換するために使用することができますが、バリューとアクセッサ関数の両方を指定することはできません。
アクセサー関数を省略した場合、動作はベースオブジェクトから継承されます。
this
に新しい値を格納するアクセッサ関数のセットと同等です。新しい値は、this
自体の動的プロパティを上書きし、継承されたアクセッサ関数を上書きすることに注意してください。メソッドと同様に、Get、Set、Callの第1パラメータはthis
(対象オブジェクト)です。Setの場合、第2パラメータはvalue
(割り当てられる値)です。これらのパラメータは、クラス内のメソッドやプロパティ定義によって自動的に定義されますが、通常の関数を使用する場合は明示的に定義する必要があります。呼び出し元から渡された他のパラメータは、パラメータリストに追加されます。
関数オブジェクトのMaxParamsおよびIsVariadicプロパティが評価され、そのプロパティがパラメータを受け入れることができるかどうかが決定されます。MaxParamsがGetが 1、Setが 2 で、IsVariadicが false または undefined の場合、このプロパティはパラメータを受け取ることができません; これらは、代わりに get によって返されたオブジェクトの __Item プロパティに転送されます。
オブジェクトから自身のプロパティを削除する。
RemovedValue := Obj.DeleteProp(Name)
型:文字列
プロパティ名です。
型:任意
This method returns the value of the removed property (blank if none).
DefinePropと互換性のある、与えられた自身のプロパティの記述子を返します。
Descriptor := Obj.GetOwnPropDesc(Name)
型:文字列
プロパティ名です。
型:オブジェクト
動的プロパティの場合、戻り値は、各アクセッサ関数に対応する独自のプロパティを持つ新しいオブジェクトになります:Get、Set、Call。各プロパティは、対応するアクセサー関数がObj自身に定義されている場合にのみ存在します。Valueプロパティの場合、Valueという名前のプロパティを持つ新しいオブジェクトが返り値となる。このような場合、Obj.GetOwnPropDesc(Name).Value == Obj.%Name%
。
返されたオブジェクトを変更しても、DefinePropが呼び出されない限り、Objには何の影響もない。
Objがその名前のプロパティを所有していない場合、PropertyErrorが投げられる。スクリプトは、not desc.HasProp("Value")
をチェックすることによって、プロパティが動的かどうかを判断することができます。descは、GetOwnPropDescの戻り値です。
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ループの変数は、列挙者のパラメータに対応しており、次のようになっています:
型:文字列
プロパティの名前です。
型:任意
プロパティの値です。
プロパティにゲッターメソッドがある場合は、そのメソッドを呼び出して値を取得します(Valueが省略された場合を除く)。
ダイナミックプロパティは、列挙に含まれます。但し:
注:メソッド定義で定義されたプロパティは、通常ゲッターを持たないため、スキップされます。
プロパティゲッターを呼ばずに自分のプロパティを列挙したり、型に関係なくすべてのプロパティを列挙するには、forループやenumeratorに単一の変数のみを渡します。GetOwnPropDescは、値プロパティと動的プロパティを区別するために使用でき、同時に値またはゲッター/セッター/メソッドを取得することもできます。
なぜなら、プロパティの評価は、通常、オブジェクトに対応するゲッターや値があるかどうか(同じオブジェクトかベースオブジェクトのいずれか)に依存するからです。2つの変数が指定された場合の矛盾を避けるため、OwnPropsはCallアクセサー関数のみを持つ自身のプロパティをスキップする。事例:
また、このメソッドのデフォルトの実装は、関数として定義されています:ObjOwnProps(Obj)
。
オブジェクトのベースオブジェクトを取得または設定する。
CurrentBaseObj := Obj.Base
Obj.Base := NewBaseObj
NewBaseObjは Object でなければなりません。
新しいベースを割り当てると、オブジェクトのネイティブタイプが変更される場合は、例外がスローされます。オブジェクトのネイティブタイプは、Object.Prototype
や Array.Prototype
などの組み込みクラスに属する、最も近いプロトタイプオブジェクトによって決定されます。例えば、Arrayのインスタンスは必ずArray.Prototype
から直接または間接的に派生していなければならない。
プロパティやメソッドはベースオブジェクトから動的に継承されるため、オブジェクトのベースを変更すると、継承されたプロパティやメソッドを利用できるものも変更されます。
このプロパティはAnyから継承されますが、Objectのインスタンスに対してのみ設定することができます。
こちらも参照のこと:ObjGetBase、ObjSetBase
オブジェクトのベースとなるオブジェクトを設定します。
ObjSetBase(Obj, BaseObj)
メタファンクションや プロパティファンクションは呼び出されません。Baseプロパティをオーバーライドしても、この関数の動作に影響はありません。
ObjまたはBaseObjが不正な型である場合、例外が発生します。
See also: ObjGetBase, Base property
オブジェクトが所有するプロパティの数を返します。
Count := ObjOwnPropCount(Obj)
オブジェクトの内部配列である自プロパティの現在の容量を設定します。
MaxProps := ObjSetCapacity(Obj, MaxProps)
型:整数
新しい容量です。現在の自プロパティの数より少ない場合、その数が代わりに使用され、未使用のスペースは解放されます。
型:整数
This function returns the new capacity.
Objが不正な型である場合は例外が発生します。
オブジェクトの内部配列のプロパティの現在の容量を返します。
MaxItems := ObjGetCapacity(Obj)
Objが不正な型である場合は例外が発生します。