功能层次

时间:2010-02-22 22:14:11

标签: javascript function

如何在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.

2 个答案:

答案 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对象和函数有很多功能和灵活性。