概要
JavaScript における関数の全ては、実際には Function
オブジェクトです。
構文
new Function ([arg1[, arg2[, ... argN]],] functionBody)
引数
-
arg1, arg2, ... argN
-
仮引数の名前として関数で用いるための名前。各々は、妥当な JavaScript の識別子と一致する文字列か、コンマで区切られたそのような文字列のリストでなければなりません。例えば、"
x
"、"theValue
" 、"a,b
。 -
functionBody
- 関数定義を形成する JavaScript の文を含む文字列。
説明
Function
コンストラクタで生成された Function
オブジェクトは、関数が作成されたときにパースされます。これは、関数を宣言し、それをコード内で呼び出すよりも効果的ではありません。なぜなら、function
文で宣言された関数はコードの他の部分と一緒にパースされるからです。
関数に渡された実引数の全ては、それらが渡された順番に、生成された関数内における仮引数の識別子の名前と同等に扱われます。
Note: Functions created with the Function
constructor do not create closures to their creation contexts; they always run in the window context (unless the function body starts with a"use strict";
statement, in which case the context is undefined).
new
演算子を用いずに)関数として、Function
コンストラクタを実行することは、コンストラクタとして実行することと同じです。プロパティ
Function
インスタンスから継承されているプロパティについては、Function インスタンスのプロパティを参照してください。
- prototype
-
Function
オブジェクトの全ての拡張を可能にします。
メソッド
Function
インスタンスから継承されているメソッドについては、Function インスタンスのメソッドを参照してください。Function
オブジェクトは、自分自身のメソッドを持っていませんが、プロトタイプチェーンを通していくつかのメソッドを継承しています。
Function
インスタンス
Function
インスタンスは Function.prototype
を継承します。 すべてのコンストラクタと同様に、コンストラクタのプロトタイプオブジェクトを変更することで、すべての Function
インスタンス が変更が加えられます。
プロパティ
-
Function.arguments
-
An array corresponding to the arguments passed to a function. This is deprecated as property of
Function
, use thearguments
object available within the function instead. -
Function.arity
-
Used to specifiy the number of arguments expected by the function, but has been removed. Use thelength
property instead. -
Function.caller
- Specifies the function that invoked the currently executing function.
-
Function.length
- Specifies the number of arguments expected by the function.
-
Function.name
- The name of the function.
-
Function.displayName
- The display name of the function.
- Function.prototype.constructor
-
Specifies the function that creates an object's prototype. See
Object.constructor
for more details.
メソッド
-
Function.prototype.apply()
- Applies the method of another object in the context of a different object (the calling object); arguments can be passed as an Array object.
-
Function.prototype.bind()
- Creates a new function which, when called, itself calls this function in the context of the provided value, with a given sequence of arguments preceding any provided when the new function was called.
-
Function.prototype.call()
- Calls (executes) a method of another object in the context of a different object (the calling object); arguments can be passed as they are.
-
Function.prototype.isGenerator()
-
Returns
true
if the function is a generator; otherwise returnsfalse
. -
Function.prototype.toSource()
-
Returns a string representing the source code of the function. Overrides the
Object.toSource
method. -
Function.prototype.toString()
-
Returns a string representing the source code of the function. Overrides the
Object.toString
method.
例
例: Function
コンストラクタの引数を指定する
次のコードは、2 つの引数を受け取る Function
オブジェクトを生成します。
var multiply = new Function("x", "y", "return x * y"); var theAnswer = multiply(7, 6);
引数 "x
" と "y
" は、"return x * y
" という関数の中身において使用される仮引数の名前です。