Visit Mozilla.org

Core JavaScript 1.5 Reference:Global Objects:Function

出典: MDC


目次

[編集] 概要

JavaScript における関数の全ては、実際には Function オブジェクトです。

[編集] 構文

new Function ([arg1[, arg2[, ... argN]],] functionBody)

[編集] 引数

arg1, arg2, ... argN
仮引数の名前として関数で用いるための名前。各々は、妥当な JavaScript の識別子と一致する文字列か、コンマで区切られたそのような文字列のリストでなければなりません。例えば、"x"、"theValue" 、"a,b
functionBody
関数定義を形成する JavaScript の文を含む文字列。

[編集] 説明

Function コンストラクタで生成された Function オブジェクトは、それらが用いられる度に評価されます。これは、関数を宣言し、それをコード内で呼び出すよりも効果的ではありません。なぜなら、宣言された関数は、一度だけしか解析されないからです。

関数に渡された実引数の全ては、それらが渡された順番に、生成された関数内における仮引数の識別子の名前と同等に扱われます。

new 演算子を用いずに)関数として、Function コンストラクタを実行することは、コンストラクタとして実行することと同じです。

[編集] プロパティ

Function インスタンスから継承されているプロパティについては、Function インスタンスの プロパティ を参照してください

prototype
Function オブジェクトの全ての拡張を可能にします。

Function.prototype から継承されるプロパティ
caller, constructor, length, name

[編集] メソッド

Function インスタンスから継承されているメソッドについては、Function インスタンスの メソッド を参照してください

Function オブジェクトは、自分自身のメソッドを持っていませんが、プロトタイプチェーンを通していくつかのメソッドを継承しています。

Function.prototype から継承されるメソッド
apply, call, toSource, toString, valueOf

Object.prototype から継承されるメソッド
__defineGetter__, __defineSetter__, hasOwnProperty, isPrototypeOf, __lookupGetter__, __lookupSetter__, __noSuchMethod__, propertyIsEnumerable, unwatch, watch

[編集] Function インスタンス

Function オブジェクトの全ては、Function.prototype を継承します。Function.prototype オブジェクトへの変更は、Function インスタンスの全てに伝播します。

[編集] プロパティ

arguments
非推奨
関数に渡した引数に一致する配列。これは、Function オブジェクトのプロパティとしては、非推奨です。代わりに関数内に用意されている arguments オブジェクトを使用してください。
arity
非推奨
関数によって期待される引数の数を指定します。代わりに length プロパティを使用してください。
caller
非標準
現在実行している関数を呼び出した関数を返します。
constructor
オブジェクトのプロトタイプを生成する関数を指定します。
length
関数によって期待される引数の数を指定します。
name
非標準
関数の名前。

[編集] メソッド

apply
別のオブジェクトのメソッドを異なるオブジェクト(呼び出すオブジェクト)のコンテキスト内において適用します。引数は、配列オブジェクトとして渡すことができます。
call
別のオブジェクトのメソッドを異なるオブジェクト(呼び出すオブジェクト)のコンテキスト内において呼び出します(実行します)。引数は、指定するオブジェクトのものととして渡すことができます。
toSource
非標準
関数のソースコードを表す文字列を返します。Object.toSource メソッドを上書きします。
toString
関数のソースコードを表す文字列を返します。Object.toString メソッドを上書きします。

Object.prototype から継承されるメソッド
__defineGetter__, __defineSetter__, hasOwnProperty, isPrototypeOf, __lookupGetter__, __lookupSetter__, __noSuchMethod__, propertyIsEnumerable, unwatch, valueOf, watch

[編集]

[編集] 例: Function コンストラクタの引数を指定する

次のコードは、2 つの引数を受け取る Function オブジェクトを生成します。

var multiply = new Function("x", "y", "return x * y");
var theAnswer = multiply(7, 6);

引数 "x" と "y" は、"return x * y" という関数の中身において使用される仮引数の名前です。

[編集] 参照