Function 組込みオブジェクト

この章では組込み変数領域が初めから備えている Function 組込みオブジェクトを定義する。

Function関数オブジェクトに対応する Type のインスタンスである。

Function のメンバ

prototype
Object.prototype を準プロトタイプとするオブジェクト。
name
文字列オブジェクト "Function"
id メソッド
1-ary メソッド。関数として呼出されると、[[一つ目の引数]] を返す。 引数が一つも渡されなかった場合の動作は規定しない。
compose メソッド
関数として呼出されると、以下の動作を行う:
  1. 渡された引数の個数が 0 ならば、[[初期の Function.id または 関数として呼出されると初期の Function.id と同じ動作を行う新しい 関数オブジェクト]] を返す。
  2. 渡された引数の全てを f1, f2, …, fn とする。これらのうち一つでも関数として 呼出し可能でなければ、新しい NotCallableError のインスタンスを投げる。
  3. [[新しい関数オブジェクト]] を返す。このオブジェクトは、$prototype 内部メンバ以外にメンバ・内部メンバを持たないものとする。 この関数オブジェクトが関数として呼び出されたときの動作は、以下の通りとする:
    1. この呼出しと同じ @this 値と引数で、fn を関数として呼出し、その結果を rn とする。
    2. i = n − 1, n − 2, …, 2, 1 について、 i = n − 1 から i = 1 まで順番に以下の動作を行う: ri+1 に対してget-reference-value を行い、その結果が正常終了でなければ、直ちにそれを返す。 正常終了ならば、その値を唯一の引数とし、この呼出しと同じ @this 値で fi を関数として呼出し、その結果を ri とする。
    3. r1 を返す。

Function の内部メンバ

$prototype
Type.prototype

Function の関数としての呼出し

Function は関数として呼出し可能であり、関数として呼出されると新しい UnsupportedOperationError のインスタンスを投げる。

Function のインスタンスのプロパティ

Function のインスタンスは以下のプロパティを持つ。ただし、 Function.prototype やその準プロトタイプのプロパティが スクリプトの実行によって変更された場合は、この限りではない。

$juxtapose メソッド
1-ary メソッド。関数として呼出されると、次の処理を行う:
  1. 渡された @this 値を f とする。
  2. f が関数オブジェクトでなければ新しい TypeError のインスタンスを投げる。
  3. 渡された引数を g1, g2, …, gn とする。ただし n は引数の個数である。
  4. n = 1 でありかつ g1 が 関数オブジェクトならば、初期の Void.void を @this 値とし、fg1 の二つの引数で Function.compose を関数として呼出し、その結果を返す。
  5. 初期の Void.void を @this 値、g1, g2, …, gn を引数として、f を関数として呼出し、その結果を返す。
toString メソッド
0-ary メソッド。関数オブジェクトを @this 値として関数として呼び出されると、 渡された @this 値を文字列に変換し、その文字列を内容とする文字列オブジェクトを値とする正常終了の結果を返す。文字列への変換の方法は実行環境に任せる。

Function オブジェクトの標準的なプロパティ

arity
Integer オブジェクト。この値は 0 以上であり、Function オブジェクトが関数として呼出されるときの標準的な引数の個数を表す。 関数生成式によって作られた関数オブジェクトでは、 その関数生成式の IdentifierList に含まれる Identifier の個数を表す。
© 2006-2007 Magicant