コンストラクタ関数

広告

Functionクラスのコンストラクタ関数は次のものが用意されています。

Functionクラスのオブジェクトを生成します。

パラメータ:
  arg  引数
  val  関数の本体
例外:
  SyntaxError  関数本体の中に構文エラーがあった場合

Functionクラスのオブジェクトを作成するコンストラクタ関数です。まずオブジェクトで受け取る引数を文字列で指定します。複数ある場合は続けて記述して下さい。そして引数の最後で関数の本体を文字列で指定します。関数本体が複数の文から成り立っている場合はセミコロンで一つ一つの文を区切って記述します。

new Function("arg1", "arg2", "arg3", "body");

例えば2つの引数を受け取り、その平均値を返す関数オブジェクトは次のように記述できます。

var heikin = new Function("x", "y", "var r = (x + y) / 2;return r;");

関数オブジェクトを呼び出すには次のように記述します。

var heikin = new Function("x", "y", "var r = (x + y) / 2;return r;");
var num = heikin(10, 8);

関数オブジェクトはこのように作成することができますが、このような使い方はあまり使われません。通常は次のように関数定義式を使って関数を定義した方が便利です。

function heikin(x, y){
  var r = (x + y) / 2;
  return r;
}

var num = heikin(10, 8);
サンプルコード

では簡単なサンプルで試してみます。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>JavaScript テスト</title>
</head>
<body>

<script type="text/javascript" src="./js/script1_1.js">
</script>

</body>
</html>
function print(str){
  document.write(str + "<br />");
}

document.write("<p>");

var heikin = new Function("x", "y", "var result = (x + y) / 2;return result;");

print("10 と 8の平均は" + heikin(10, 8));
print("32 と 19の平均は" + heikin(32, 19));

document.write("</p>");

上記を実際にブラウザ見てみると次のように表示されます。

p1-1

( Written by Tatsuo Ikura )