メソッドの実装関数を取得します。
Method := GetMethod(Value , Name, ParamCount)
型:任意
ComObject 以外の任意の型の値。
型:文字列
If omitted, validation is performed on Value itself and Value is returned if successful. Otherwise, specify the name of the method to retrieve.
省略したとき、またはパラメータ数が確認されなかったときは、オブジェクトが呼び出し可能である可能性が高いことを確認するために、Callメソッドに対して基本的なチェックが実行されます。
そうでないときは、メソッドまたは関数に渡されるパラメーターの数を指定します。指定された場合、メソッドの MinParams、MaxParams、IsVariadic プロパティを照会して、この数のパラメータを受け入れることができることを確認することができます。これらのプロパティが存在しない場合、パラメータ数の確認は行われません。
このカウントには、暗黙のthis
パラメータを含めてはなりません。
型:機能オブジェクト
この関数は、メソッドの実装を含む関数オブジェクト、またはNameが省略された場合はValue自体を返す。
メソッドが見つからない場合、またはプロパティゲッターを呼び出さずに取得できない場合は、MethodErrorがスローされます。
バリデーションが試みられた場合、メソッドのプロパティを照会した結果、例外が発生することがあります。バリデーションに失敗した場合、ValueErrorまたはMethodErrorがスローされます。
メソッドは、以下のいずれかによって定義することができる:
{Call: fn}
からDefinePropへ、fnはメソッドを実装しています。関数オブジェクトを呼び出す際には、通常は隠されているthisパラメータに値を与える必要があります。例えば、Method(Value, Parameters*)
のようなものです。
GetMethodの標準的な実装には上記のような制限がありますが、GetMethod(Value, Name)
の代わりにValue.GetMethod(Name)
を使用すれば、オブジェクトValueは独自のGetMethodの実装を定義できます。
GetMethod(Value, "Call", N)
は、GetMethod(Value,, N)
とは異なり、Callメソッドは関数オブジェクト自身をパラメータとし、その使用方法はValueと異なる場合があります。例えば、Func.Prototype.Call
は、すべての組み込み関数とユーザー定義関数に適用される単一のメソッドであり、そのため、任意の数のパラメータを受け入れる必要があります。
オブジェクト、HasMethod、HasBase、HasProp
GetMethod メソッドに関する情報を取得し、報告します。
method := GetMethod({}, "GetMethod") ; It's also a method. MsgBox method.MaxParams ; Takes 2 parameters, including 'this'. MsgBox method = GetMethod ; Actually the same object in this case.