2010-02-22 4 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

답변

1

이름은 당신이 원하는 방식으로 기능 객체 생성 : 그것은 이렇게

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

: 당신은 단순히 개체를 사용하여 배열 표기법의 멤버를 찾기 위해 함수를 작성할 수

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 
    } 
}; 

을 방법은 유지하기가 훨씬 쉬우 며 훨씬 더 확장 성이 좋습니다. 그러나, 나는 그렇게하지 않을 것입니다. 나는 객체 자체와 DO의 기능을 대체 할 것입니다 그리고 당신은 단순히이 회원에게 옛날 방식 호출 할 수

obj.write("Something"); 

또는 이름 반환 문제가 발생하고 당신이 정말로 그것을 사용하려는 경우 :

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

JavaScript 개체 및 기능에는 많은 기능과 유연성이 있습니다.

+0

이것은 내가 찾고 있었던 excatly 히이다! 고맙습니다! – Bambert

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에 의해 예약 된 키워드다고 생각한다. 나는 거의 모든 언어에서 그 키워드를 사용한다. 나는 당신이 그 길에서 어느쪽으로 든 떠돌아 다니는 것을 권장합니다.