JavaScript动态函数名称

时间:2012-05-02 18:26:30

标签: javascript

我需要动态地将函数的名称赋给关联数组的元素。这是我的尝试不起作用。我要求帮助的问题是我尝试调用函数: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 个答案:

答案 0 :(得分:5)

如果要将其存储为函数,请直接传递函数。否则,如果您只想将其存储为字符串,则可以使用引号。

变化:

cr['cmd1'] ='foo';

要:

cr['cmd1'] = foo;

答案 1 :(得分:5)

使用此语法window[function_name]('para1');

访问这些函数

您的用法将是这样的

var msg = window[cr['cmd1']](x);

答案 2 :(得分:1)

我会使用window []并在尝试执行之前确保它是一个函数,因为你无法控制传递的内容。

var f = window[cr['cmd1']];
if(typeof f==='function') {
  f(x);
}

答案 3 :(得分: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的警告框。