blob: 6de176b7abc9e8c21526ade102343dedf2d9db5b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
---
title: Function Object
slug: conflicting/Web/JavaScript/Guide
original_slug: Web/JavaScript/Guide/Obsolete_Pages/Predefined_Core_Objects/Function_Object
---
<p> </p>
<h3 id="Function_.E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88" name="Function_.E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88">Function オブジェクト</h3>
<p>定義済みの <code>Function</code> オブジェクトは、関数としてコンパイルさせたい JavaScript コードの文字列を指定します。</p>
<p><code>Function</code> オブジェクトを作成するには次のようにします。</p>
<pre>functionObjectName = new Function ([arg1, arg2, ... argn], functionBody)
</pre>
<p><code>functionObjectName</code> は変数名または既存のオブジェクトのプロパティ名です。オブジェクトに小文字のイベントハンドラ名を続けて、<code>window.onerror</code> のようにして指定することもできます。</p>
<p><code>arg1</code>, <code>arg2</code>, ... <code>argn</code> は関数が仮引数名として使用する引数です。それぞれが JavaScript の識別子として妥当な文字列である必要があります。例えば、"x" や "theForm" などです。</p>
<p><code>functionBody</code> は関数の本体としてコンパイルさせたい JavaScript コードを表す文字列です。</p>
<p><code>Function</code> オブジェクトはそれが使用されるたびに評価されます。これは関数を宣言し、それをコード内で呼び出す方法よりも非効率的です。宣言された関数はコンパイルされるからです。</p>
<p>ここで説明した関数の定義方法に加えて、<code>function</code> 文と関数式を用いることもできます。詳しくは <a href="/ja/Core_JavaScript_1.5_Reference" title="ja/Core_JavaScript_1.5_Reference">コア JavaScript 1.5 リファレンス</a> を参照してください。</p>
<p>次のコードは関数を変数 <code>setBGColor</code> に代入します。この関数は開いている文書の背景色をセットします。</p>
<pre>var setBGColor = new Function("document.bgColor='antiquewhite'")
</pre>
<p><code>Function</code> オブジェクトを呼び出すには、それがあたかも関数であるかのように変数名を指定すればいいのです。次のコードは <code>setBGColor</code> 変数で指定された関数を実行します。</p>
<pre>var colorChoice="antiquewhite"
if (colorChoice=="antiquewhite") {setBGColor()}
</pre>
<p>次のどちらかの方法を使用することでイベントハンドラに関数を代入することができます。</p>
<pre>1. document.form1.colorButton.onclick=setBGColor
2. <INPUT NAME="colorButton" TYPE="button"
VALUE="Change background color"
onClick="setBGColor()">
</pre>
<p>上記の変数 <code>setBGColor</code> を作成することは次の関数を宣言することと同じようなことです。</p>
<pre>function setBGColor() {
document.bgColor='antiquewhite'
}
</pre>
<p>関数を変数に代入することは関数を宣言することと似ていますが、異なる点もあります。</p>
<ul>
<li><code>var setBGColor = new Function("...")</code> のようにして関数を変数に代入すると、<code>setBGColor</code> は <code>new Function()</code> を用いて作成した関数への参照がその値であるような変数になります。</li>
<li><code>function setBGColor() {...}</code> のようにして関数を作成すると、<code>setBGColor</code> は変数ではなく関数の名前になります。</li>
</ul>
<p>関数を関数の中に入れ子にすることができます。内側の関数は外側の関数に対してプライベートになります。</p>
<ul>
<li>内側の関数には外側の関数の文からしかアクセスできません。</li>
<li>内側の関数は外側の関数の引数や変数を使用できます。外側の関数は内側の関数の引数や変数を使用できません。</li>
</ul>
<p>{{ PreviousNext("Core_JavaScript_1.5_Guide:Predefined_Core_Objects:Date_Object", "Core_JavaScript_1.5_Guide:Predefined_Core_Objects:Math_Object") }}</p>
|