Object

class Object extends Any

Objectは、他のAutoHotkeyのオブジェクトクラスが派生する基本クラスです。Objectの各インスタンスは、「自身のプロパティ」のセットと、より多くのプロパティが継承されるベースオブジェクトから構成されています。オブジェクトにもメソッドがありますが、これは呼び出すことができるプロパティにすぎません。

バリュープロパティとダイナミックプロパティがあります。バリュープロパティは、単に値を含むだけである。ダイナミックプロパティは値を持たず、アクセス方法(get、set、call)に応じてアクセッサ関数を呼び出します。

以下、"Obj" はObjectクラスのインスタンスを表すプレースホルダーとして使用します。

ObjectのインスタンスはすべてObject.Prototypeに基づいており、これはAny.Prototypeに基づいている。Anyから継承されるメソッドやプロパティに加え、Objectsは以下のような定義済みのメソッドやプロパティを持ちます。

目次

静的メソッド

Call

新しいObjectを作成します。

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

メソッド

Clone

オブジェクトのシャローコピーを返す。

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).

DefineProp

新しい自身のプロパティを定義する。

Obj := Obj.DefineProp(Name, Descriptor)

パラメータ

名前

型:文字列

プロパティの名前です。

Descriptor

型:Object

以下のいずれかの自プロパティを持つオブジェクト、またはGetSetの両方を持つオブジェクト:

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.

備考

この方法は、バリュープロパティをダイナミックプロパティに、またはその逆に変換するために使用することができますが、バリューとアクセッサ関数の両方を指定することはできません。

アクセサー関数を省略した場合、動作はベースオブジェクトから継承されます。

メソッドと同様に、GetSetCallの第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.

DeleteProp

オブジェクトから自身のプロパティを削除する。

RemovedValue := Obj.DeleteProp(Name)

パラメータ

名前

型:文字列

プロパティ名です。

戻り値

型:任意

This method returns the value of the removed property (blank if none).

GetOwnPropDesc

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") をチェックすることによって、プロパティが動的かどうかを判断することができます。

HasOwnProp

Returns 1 (true) if an object owns a property by the specified name, otherwise 0 (false).

HasOwnProp := Obj.HasOwnProp(Name)

また、このメソッドのデフォルトの実装は、関数として定義されています:ObjHasOwnProp(Obj, Name).

OwnProps

オブジェクト自身のプロパティを列挙する。

For Name , Value in Obj.OwnProps()

This method returns a new enumerator. 列挙子は通常、forループに直接渡され、ループの反復ごとに列挙子を1回呼び出します。列挙者を呼び出すたびに、次のプロパティ名や値が返されます。forループの変数は、列挙者のパラメータに対応しており、次のようになっています。

名前

型:文字列

プロパティの名前です。

型:任意

プロパティの値です。

プロパティにゲッターメソッドがある場合は、そのメソッドを呼び出して値を取得します(Valueが省略された場合を除く)。

ダイナミックプロパティは、列挙に含まれます。但し:

プロパティゲッターを呼ばずに自分のプロパティを列挙したり、型に関係なくすべてのプロパティを列挙するには、for-loopやenumeratorに単一の変数のみを渡します。GetOwnPropDescは、値プロパティと動的プロパティを区別するために使用でき、同時に値またはゲッター/セッター/メソッドを取得することもできます。

なぜなら、プロパティの評価は、通常、オブジェクトに対応するゲッターや値があるかどうか(同じオブジェクトかベースオブジェクトのいずれか)に依存するからです。2つの変数が指定された場合の矛盾を避けるため、OwnPropsはCallアクセサー関数のみを持つ自身のプロパティをスキップする。事例:

また、このメソッドのデフォルトの実装は、関数として定義されています:ObjOwnProps(Obj).

属性

Base

オブジェクトのベースオブジェクトを取得または設定する。

CurrentBaseObj := Obj.Base
Obj.Base := NewBaseObj

NewBaseObj must be an Object.

新しいベースを割り当てると、オブジェクトのネイティブタイプが変更される場合は、例外がスローされます。オブジェクトのネイティブタイプは、Object.PrototypeArray.Prototypeなどの組み込みクラスに属する、最も近いプロトタイプオブジェクトによって決定されます。例えば、Arrayのインスタンスは必ずArray.Prototypeから直接または間接的に派生していなければならない。

プロパティやメソッドはベースオブジェクトから動的に継承されるため、オブジェクトのベースを変更すると、継承されたプロパティやメソッドを利用できるものも変更されます。

このプロパティはAnyから継承されますが、Objectのインスタンスに対してのみ設定することができます。

こちらもご覧ください:ObjGetBase, ObjSetBase

関数

ObjSetBase

オブジェクトのベースとなるオブジェクトを設定します。

ObjSetBase(Obj, BaseObj)

メタファンクションプロパティファンクションは呼び出されません。Baseプロパティをオーバーライドしても、この関数の動作に影響はありません。

ObjまたはBaseObjが不正な型である場合、例外が発生します。

こちらもご覧ください:ObjGetBase, Base property

ObjOwnPropCount

オブジェクトが所有するプロパティの数を返します。

Count := ObjOwnPropCount(Obj)

ObjSetCapacity

オブジェクトの内部配列である自プロパティの現在の容量を設定します。

MaxProps := ObjSetCapacity(Obj, MaxProps)

パラメータ

MaxProps

型:整数

新しい容量です。現在の自プロパティの数より少ない場合、その数が代わりに使用され、未使用のスペースは解放されます。

戻り値

型:整数

This function returns the new capacity.

エラー処理

Objが不正な型である場合は例外が発生します。

ObjGetCapacity

オブジェクトの内部配列のプロパティの現在の容量を返します。

MaxItems := ObjGetCapacity(Obj)

Objが不正な型である場合は例外が発生します。