2010-02-22 11 views
-1

Comment résoudre une énorme hiérarchie dans la fonction JavaScript? Avec le commutateur? Je vous remercie.Hiérarchie des fonctions

(. Désolé, je ne suis pas anglophone)

function do(param1, param2) { 

    switch(param1) { 

    case "write": 

     /* another switch for param2 */ 

    break; 

    ... 

    } 

} 

Exemple appelle:

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

Quel problème essayez-vous de résoudre avec cela? – hobodave

Répondre

1

Créer un objet que les noms fonctionne de la façon dont vous voulez:

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

Vous pouvez écrire votre fonction pour simplement regarder les membres de cet objet en utilisant la notation de tableau:

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

En procédant façon serait beaucoup plus facile à maintenir et serait beaucoup plus évolutive. Cependant, je ne le ferais même pas de cette façon. Je remplacerai la fonction do avec l'objet lui-même et vous pouvez simplement appeler ces membres à l'ancienne:

obj.write("Something"); 

Ou, si le retour du nom provoque des problèmes et que vous voulez vraiment l'utiliser:

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

Il y a beaucoup de puissance et de flexibilité dans les objets et les fonctions JavaScript.

+0

C'est exactement ce que je cherchais! Je vous remercie! – 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. 
    } 
    } 
} 

C'est une mauvaise façon de programmer [mauvaises pratiques de programmation ] Je vous recommande fortement d'apprendre la langue au lieu de définir vos propres fonctions pour faire des choses d'une ligne ...

Je crois que "do" est un mot-clé réservé par JavaScript. J'utilise rarement ce mot-clé dans toutes les langues. Je vous recommande de vous en éloigner, de toute façon.

Questions connexes