Please note, this is a STATIC archive of website developer.mozilla.org from 03 Nov 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

 

Function オブジェクト

定義済みの Function オブジェクトは、関数としてコンパイルさせたい JavaScript コードの文字列を指定します。

Function オブジェクトを作成するには次のようにします。

functionObjectName = new Function ([arg1, arg2, ... argn], functionBody)

functionObjectName は変数名または既存のオブジェクトのプロパティ名です。オブジェクトに小文字のイベントハンドラ名を続けて、window.onerror のようにして指定することもできます。

arg1, arg2, ... argn は関数が仮引数名として使用する引数です。それぞれが JavaScript の識別子として妥当な文字列である必要があります。例えば、"x" や "theForm" などです。

functionBody は関数の本体としてコンパイルさせたい JavaScript コードを表す文字列です。

Function オブジェクトはそれが使用されるたびに評価されます。これは関数を宣言し、それをコード内で呼び出す方法よりも非効率的です。宣言された関数はコンパイルされるからです。

ここで説明した関数の定義方法に加えて、function 文と関数式を用いることもできます。詳しくは コア JavaScript 1.5 リファレンス を参照してください。

次のコードは関数を変数 setBGColor に代入します。この関数は開いている文書の背景色をセットします。

var setBGColor = new Function("document.bgColor='antiquewhite'")

Function オブジェクトを呼び出すには、それがあたかも関数であるかのように変数名を指定すればいいのです。次のコードは setBGColor 変数で指定された関数を実行します。

var colorChoice="antiquewhite"
if (colorChoice=="antiquewhite") {setBGColor()}

次のどちらかの方法を使用することでイベントハンドラに関数を代入することができます。

1. document.form1.colorButton.onclick=setBGColor
2. <INPUT NAME="colorButton" TYPE="button"
      VALUE="Change background color"
      onClick="setBGColor()">

上記の変数 setBGColor を作成することは次の関数を宣言することと同じようなことです。

function setBGColor() {
   document.bgColor='antiquewhite'
}

関数を変数に代入することは関数を宣言することと似ていますが、異なる点もあります。

  • var setBGColor = new Function("...") のようにして関数を変数に代入すると、setBGColornew Function() を用いて作成した関数への参照がその値であるような変数になります。
  • function setBGColor() {...} のようにして関数を作成すると、setBGColor は変数ではなく関数の名前になります。

関数を関数の中に入れ子にすることができます。内側の関数は外側の関数に対してプライベートになります。

  • 内側の関数には外側の関数の文からしかアクセスできません。
  • 内側の関数は外側の関数の引数や変数を使用できます。外側の関数は内側の関数の引数や変数を使用できません。

ドキュメントのタグと貢献者

 このページの貢献者: teoli, ethertank, happysadman, Mgjbot, Electrolysis
 最終更新者: teoli,