0

関数の名前を連想配列の要素に動的に割り当てる必要があります。これはうまくいかない私の試みです。私が助けを求めている問題は、ここで関数を呼び出そうとするところですcr['cmd1'](x)

<!DOCTYPE html>

<html>
<head>
    <script type="text/javascript">
        var cr =[];
        var x = 5;
        cr['cmd1'] ='foo';
        var msg = cr['cmd1'](x);  
        alert(msg);

        function foo(y){
            return y;
        }
    </script>
</head>
<body>
</body>
</html>

編集:cr['cmd1'] ='foo';ここで制御できない文字列が渡されます。そのため、外部アプリケーションからの開始点として文字列を使用する必要があります。

4

4 に答える 4

5

関数として保存する場合は、関数を直接渡します。それ以外の場合は、文字列として保存するだけであれば、引用符を使用できます。

変化する:

cr['cmd1'] ='foo';

に:

cr['cmd1'] = foo;
于 2012-05-02T18:28:52.927 に答える
5

この構文を使用して関数にアクセスしますwindow[function_name]('para1');

使い方はこんな感じになります

var msg = window[cr['cmd1']](x);
于 2012-05-02T18:29:18.370 に答える
1

渡されるものを制御できないため、window []を使用して、実行する前にその関数を確認します。

var f = window[cr['cmd1']];
if(typeof f==='function') {
  f(x);
}
于 2012-05-02T18:41:24.903 に答える
0

そこで行っているのは、配列に関数を割り当てることです。おそらく実行しようとしているより一般的なパターンは、配列表記を使用してオブジェクトの関数を呼び出すことです。

    <script type="text/javascript">
        var cr = {};
        cr.cmd1 = function foo(y){
            return y;
        };
        var x = 5;
        var msg = cr['cmd1'](x);  
        alert(msg);
    </script>

このコードは、番号5を含むアラートボックスになります。

于 2012-05-02T18:39:02.610 に答える