0x0b
js_object-Function_
最終更新:
0x0b
-
view
Function
関数として呼出される Function コンストラクタ
Function がコンストラクタとしてではなく関数として呼出される場合、それは新しい Function オブジェクトを作成し初期化する。したがって、関数呼び出し Function(…) は、同じ引数をとるオブジェクト生成式 new Function(…) と等価である。
Function (p1, p2, … , pn, body)
Function 関数がある引数 p1, p2, …, pn, body (n が 0、つまり、"p" 引数がないかもしれず、 body も提供されないかもしれない) で呼出される場合、次のステップが取られる:
Function コンストラクタが同じ引数で呼出されたかのように(new Function (p1, p2, … , pn, body))、新しい Function オブジェクトを作成して返す。
Function コンストラクタが同じ引数で呼出されたかのように(new Function (p1, p2, … , pn, body))、新しい Function オブジェクトを作成して返す。
Function コンストラクタ
Function が new 式の一部で呼出されるとき、それはコンストラクタである: それは新たに生成されたオブジェクトを初期化する。
new Function (p1, p2, … , pn, body)
最後の引数は、関数の本文(実行可能なコード)を指定する; 先行する引数は仮引数を指定する。Function コンストラクタががある引数 p1, p2, …, pn, body (n が 0、つまり、"p" 引数がないかもしれず、 body も提供されないかもしれない) で呼出される場合、次のステップが取られる:
prototype プロパティは、関数がコンストラクタとして使用される可能性に備え、すべての関数に自動的に作成される。
NOTE 指定される各仮引数のために 1 引数を持つのは許容されるが、必須ではない。
例えば、次の 3 つの表現はすべて同じ結果を生む:
prototype プロパティは、関数がコンストラクタとして使用される可能性に備え、すべての関数に自動的に作成される。
NOTE 指定される各仮引数のために 1 引数を持つのは許容されるが、必須ではない。
例えば、次の 3 つの表現はすべて同じ結果を生む:
new Function("a", "b", "c", "return a+b+c") new Function("a, b, c", "return a+b+c") new Function("a,b", "c", "return a+b+c")
Function コンストラクタのプロパティ
Function コンストラクタの内部 Prototype プロパティは Function プロトタイプオブジェクト(Function プロトタイプオブジェクトのプロパティ)である。 内部プロパティと length プロパティ (値は1) の他に、 Function コンストラクタは次のプロパティを持つ:
Function.prototype
Function.prototype の初期値は Function プロトタイプオブジェクト(Functionプロトタイプオブジェクトのプロパティ)である。
このプロパティは属性 { DontEnum, DontDelete, ReadOnly } である。
このプロパティは属性 { DontEnum, DontDelete, ReadOnly } である。
Function プロトタイプオブジェクトのプロパティ
Function プロトタイプオブジェクトはそれ自体が Function オブジェクトであり (その Class が "Function" である)、起動された時、どんな引数も受け付け、undefined を返す。
Function プロトタイプオブジェクトの内部 Prototype プロパティの値は、Object プロトタイプオブジェクトnew Function (p1, p2, … , pn, body)である。
それは "空の本文" をもつファンクションである; 呼び出されれば、単に undefined を返す。
Function プロトタイプオブジェクトは、自分自身の valueOf プロパティを持たない; だが、Object プロトタイプオブジェクトの valueOf プロパティを継承する。
Function プロトタイプオブジェクトの内部 Prototype プロパティの値は、Object プロトタイプオブジェクトnew Function (p1, p2, … , pn, body)である。
それは "空の本文" をもつファンクションである; 呼び出されれば、単に undefined を返す。
Function プロトタイプオブジェクトは、自分自身の valueOf プロパティを持たない; だが、Object プロトタイプオブジェクトの valueOf プロパティを継承する。
Function.prototype.constructor
Function.prototype.constructor の初期値は、組込み Function コンストラクタである。
Function.prototype.toString ( )
関数の実装依存の表現が返される。この表現は FunctionDeclaration の構文を持つ。表現文字列内の空白、行終端子、セミコロンの使用及び配置は実装依存であることに特に注意。
toString 関数は汎用的ではない; その this 値が Function オブジェクトでなければ、例外 TypeError を投げる。それゆえ、メソッドとして他の種類のオブジェクトに転用できない。
toString 関数は汎用的ではない; その this 値が Function オブジェクトでなければ、例外 TypeError を投げる。それゆえ、メソッドとして他の種類のオブジェクトに転用できない。
Function.prototype.apply (thisArg, argArray)
apply メソッドは 2 つの引数、 thisArg および argArray をとり、オブジェクトの Call プロパティを使用して、関数呼出しを実行する。オブジェクトが Call プロパティを持っていない場合、例外 TypeError が投げられる。
thisArg が null または undefined の場合、呼出された関数は this 値としてグローバルオブジェクトを渡される。そうでなければ、呼出された関数は this 値として ToObject(thisArg) を渡される。
argArray が null または undefined の場合、呼出された関数は引数を渡されない。そうでなければ、 argArray が配列でも arguments オブジェクト(実行コンテキスト)でもない場合、例外 TypeError が投げられる。 argArrayが 配列または arugments オブジェクトのいずれかである場合、関数は (ToUint32(argArray.length)) 個の引数argArray[0], argArray[1], ... argArray[ToUint32(argArray.length)-1] を渡される。
apply メソッドの length プロパティは 2 である。
thisArg が null または undefined の場合、呼出された関数は this 値としてグローバルオブジェクトを渡される。そうでなければ、呼出された関数は this 値として ToObject(thisArg) を渡される。
argArray が null または undefined の場合、呼出された関数は引数を渡されない。そうでなければ、 argArray が配列でも arguments オブジェクト(実行コンテキスト)でもない場合、例外 TypeError が投げられる。 argArrayが 配列または arugments オブジェクトのいずれかである場合、関数は (ToUint32(argArray.length)) 個の引数argArray[0], argArray[1], ... argArray[ToUint32(argArray.length)-1] を渡される。
apply メソッドの length プロパティは 2 である。
Function.prototype.call (thisArg [ , arg1 [ , arg2, … ] ] )
call メソッドは 1 つ以上の引数を取り、thisArg および(選択的に) arg1, arg2, ... をとり、オブジェクトのCall プロパティを使用して、関数呼び出しを実行する。オブジェクトが Call プロパティを持っていない場合、TypeError 例外が投げられる。呼出された関数は、引数として arg1、arg2 などを渡される。 thisArg が null または undefined の場合、呼出された関数は this 値としてグローバルオブジェクトを渡される。そうでなければ、呼出された関数は this 値として ToObject(thisArg) を渡される。 call メソッドの length プロパティは 1 である。
Function インスタンスのプロパティ
必須の内部プロパティに加えて、各ファンクション実体は Call プロパティ、 Construct プロパティ、 Scope プロパティ(型、関数、オブジェクトの生成)を持つ。Class プロパティの値は "Function" である。
length
length プロパティの値は通常、関数に期待される "典型的な" 引数の数を示す整数\である。だが、言語はそれ以外の数の引数\で関数が呼び出されることを許す。length プロパティによって指定される以外の数の引数\で呼び出された時の関数の振舞いは、関数に依存する。このプロパティは属性 { DontDelete, ReadOnly, DontEnum } である。
prototype
prototype プロパティの値は、Function オブジェクトがコンストラクタとして呼出される前に、新しく作成されるオブジェクトの内部 prototype プロパティの初期化に使用される。このプロパティは属性 { DontDelete } である。
HasInstance (V)
F を Function オブジェクトと仮定する。F の HasInstance メソッドが値 V で呼出されるとき、次のステップが取られる: