JavaScript动态函数名

JavaScript动态函数名,javascript,Javascript,我需要动态地将函数名分配给关联数组的元素。这是我的尝试,但没有成功。我请求帮助的问题是在这里我尝试调用函数:cr['cmd1'](x) var cr=[]; var x=5; cr['cmd1']='foo'; var msg=cr['cmd1'](x); 警报(msg); 函数foo(y){ 返回y; } Edit:I在这里被传递一个字符串cr['cmd1']='foo'我无法控制。这就是为什么我必须使用字符串作为外部应用程序的起点。如果要将其存储为函数,请直接传递函数。否则,如果只想将其

我需要动态地将函数名分配给关联数组的元素。这是我的尝试,但没有成功。我请求帮助的问题是在这里我尝试调用函数:
cr['cmd1'](x)


var cr=[];
var x=5;
cr['cmd1']='foo';
var msg=cr['cmd1'](x);
警报(msg);
函数foo(y){
返回y;
}

Edit:I在这里被传递一个字符串
cr['cmd1']='foo'我无法控制。这就是为什么我必须使用字符串作为外部应用程序的起点。

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

更改:

cr['cmd1'] ='foo';
致:


使用此语法
窗口[function_name]('para1')访问函数

您的用法将是这样的

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

您在那里所做的是将函数分配给数组。您可能正在尝试的一种更常见的模式是使用数组表示法对对象调用函数

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

var cr={};
cr.cmd1=函数foo(y){
返回y;
};
var x=5;
var msg=cr['cmd1'](x);
警报(msg);

此代码生成一个包含数字5的警报框。

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

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

什么不起作用?怎么了?你期望警报结果是什么?Kirk,谢谢,但是我被传递了一个字符串“foo”作为起点。
    <script type="text/javascript">
        var cr = {};
        cr.cmd1 = function foo(y){
            return y;
        };
        var x = 5;
        var msg = cr['cmd1'](x);  
        alert(msg);
    </script>
var f = window[cr['cmd1']];
if(typeof f==='function') {
  f(x);
}