2010-02-22 161 views
-1

如何在JavaScript函数中解决巨大的层次结构?用开关?谢谢。函数层次结构

(对不起,我不是以英语为母语)

function do(param1, param2) { 

    switch(param1) { 

    case "write": 

     /* another switch for param2 */ 

    break; 

    ... 

    } 

} 

调用示例:

do('write','house'); // write house 
do('return','house'); // return house 
etc. 
+2

你想用这个解决什么问题? – hobodave 2010-02-22 22:16:21

回答

1

创建一个对象名称功能,您想要的方式:

var obj = { 
    "write": function(param) { 
     //Write param 
    }, 
    "return": function(param) { //Enclosing the function name is quotes lets you use reserved words as function names 
     //Return param 
    } 
}; 

你可以写你的函数简单地查找在使用对象数组方式成员:

function do(param1, param2) { 
    obj[param1](param2); 
} 

做这本方式会更容易维护,并且更具可扩展性。但是,我甚至不会那样做。我想替换的对象本身的DO功能,然后你可以简单地调用这些成员的老式方法:

obj.write("Something"); 

或者,如果名称回报导致的问题,你真的想使用它:

obj["return"]("Something"); 

JavaScript对象和函数具有很多功能和灵活性。

+0

这是我正在寻找的令人兴奋的!谢谢! – Bambert 2010-02-23 07:55:55

1
function do(param1, param2) { 
    switch(param1) { 
    case "write": 
    { 
     writeFunction(param2); 
     break; 
    } 
    case "return": 
    { 
     //This doesn't make sense, as the calling function would get the return message from the do function, but it wouldn't return it. 
    } 
    } 
} 

这是程序[不好的编程习惯一个糟糕的方式]。我强烈建议你学习语言,而不是定义你自己的函数来做单行事情...

我相信“do”是一个JavaScript保留的关键字。我很少在每种语言中使用该关键字。无论如何,我建议你远离它。