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 回答