如何在JavaScript函数中解决庞大的层次结构?用Switch?谢谢。
(对不起,我不是母语为英语的人。)
function do(param1, param2) {
switch(param1) {
case "write":
/* another switch for param2 */
break;
...
}
}
示例电话:
do('write','house'); // write house
do('return','house'); // return house
etc.
答案 0 :(得分: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保留的关键字。我很少在每种语言中使用该关键字。无论如何,我建议你偏离它。
答案 1 :(得分: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对象和函数有很多功能和灵活性。