使用JavaScript触发数组中的命名函数?

时间:2011-04-18 09:10:02

标签: javascript arrays function

我对JavaScript很陌生,但这个话题似乎引起了很少的论坛关注。给出了许多简单的函数:

function do_something(){...};
function do_somemore(){...};
function do_something_else(){...};

我希望能够将这些明确地分配给(这里是2D)数组中的单元格。

myMatrix[5][3] = do_something();
myMatrix[5][4] = do_somemore();
myMatrix[5][5] = do_something_else();

我想使用这种方法的原因是:

  1. 易于理解和维护。
  2. 消除了阵列中可能冗余的匿名函数分配。
  3. 任何给定的函数都可以分配给多个数组单元格,例如:

    myMatrix[2][6] = do_somemore();
    myMatrix[5][4] = do_somemore();
    myMatrix[6][3] = do_somemore();
    
  4. 不幸的是,如下所示的调用(基于各种论坛示例,再加上一些“吮吸它并看到”)都失败了。

    x = myMatrix[5][4]do_somemore();         -> "missing ; before statement"
    x = (myMatrix[5][4])do_somemore();       -> "missing ; before statement"
    x = (myMatrix[5][4]do_somemore)();       -> "missing ) in parenthetical"
    x = (myMatrix[5][4])(do_somemore());     -> "is not a function"
    x = (myMatrix[5][4])()do_somemore();     -> "missing ; before statement"
    x = myMatrix[5][4]()do_somemore();       -> "missing ; before statement"
    x = myMatrix[5][4]();                    -> "is not a function"
    x = (myMatrix[5][4])();                  -> "is not a function"
    

    由于我不了解JavaScript内部,我很高兴建议如何让函数调用触发

4 个答案:

答案 0 :(得分:2)

您应该像这样分配它们:

myMatrix[5][3] = do_something;

答案 1 :(得分:0)

myMatrix[5][3] = do_something;

您的方法会将值设置为函数的结果!

答案 2 :(得分:0)

我并不完全清楚你所追求的是什么,但是:

首先,在为数组赋值之前,必须存在该数组:

var myMatrix = [];
myMatrix[5] = [];
myMatrix[5][3] = … // Then you can assign something

然后,如果要分配函数的返回值

myMatrix[5][3] = do_something();

或者,如果您想指定功能本身

myMatrix[5][3] = do_something;

...然后调用它并将其返回值分配给x

var x = myMatrix[5][3](); 

...与var x = do_something()相同,但函数this内部将myMatrix[5]而不是window

答案 3 :(得分:0)

myMatrix[5][3] = do_something; 
myMatrix[5][4] = do_somemore; 
myMatrix[5][5] = do_something_else; 


var x = myMatrix[5][3]();
var y = myMatrix[5][4]();
var z = myMatrix[5][5]();