2010-02-22 192 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保留的關鍵字。我很少在每種語言中使用該關鍵字。無論如何,我建議你遠離它。