関数名を文字列で指定して呼び出せる機構

JavaScriptでは、文字列を組み合わせて実行文を作り、evalで実行できますが、
関数を文字列で呼び出すにあたって、evalを使わなくていい方法があります。

  1. 関数もオブジェクトとして扱う(変数のように扱える)
  2. 連想配列が使える (文字列をキーとする配列が使える)

という2つのJavaScriptの特徴を使えば、evalを使わなくても、
動的な文字列による関数呼び出しができます。

関数名を文字列で指定して呼び出すやりかたが使えます。

グローバルスコープの関数に限っては、window["関数名"](引数)で呼び出せます。

書き方

1.関数格納用の連想配列の定義

すべて開くすべて閉じる
  1
 
関数格納連想配列名 = new Array();

2. 1.で定義した連想配列に関数メンバを追加

  1
  2
  3
  4
  5
  6
  7

3.文字列を使って呼び出す

  1

という流れになります。

例:

すべて開くすべて閉じる
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 
-
!
-
|
!
 
-
|
!
-
!
 
 
funcObj = new Array; funcObj.A1 = funcion( str )
{
       alert("A1:" + str );
}
funcObj.B2 = function(str)
{
       alert("B2:" + str);
}
var typeF = "A";
var num = 1;
funcObj[ typeF + num ]();

すべて開くすべて閉じる
  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
 
 
 
 
 
 
 
-
!
-
-
|
!
 
 
-
|
!
 
 
 
 
 
 
 
 
<html>
<head>
<script type="text/javascript">
var id = "test1";
var dc = "ok";
var aa = "1";
var bb = "3";
var funcObj = new Array();
funcObj.test1_ok = function(id,dc){
    alert(id) }
 
function test_count(id,dc,aa,bb)
{
    funcObj[id+"_"+dc](aa,bb);
}
 
</script>
</head>
<body onload="test_count(id,dc,aa,bb);">
<body>
</html>