2013-08-14 4 views
0

J'utilise javascript dans mon projet et je suis un débutant. J'ai un scénario dans lequel je veux implémenter une propriété Status pour mon composant. Cette propriété Status affiche l'état actuel de mon composant dans une liste de statuts disponibles. Par exemple:Comment implémenter cette logique en javascript?

Je mis en œuvre ainsi:

var availableStatus = [ 
          { Name: 'visible' }, 
          { Name: 'hidden' }, 
          { Name: 'deny' }, 
          { Name: 'allow' }, 
          { Name: 'destroy' } 
         ]; 

    var Status = availableStatus[0]; 

    if(Status === availableStatus[0]) 
    //do this 
    else if(Status === availableStatus[1]) 
    //do this 
    ... 

Mais je pense qu'il devrait y avoir une autre meilleure approche pour cela. Et cette logique dépend de l'ordre des éléments du tableau qui peut créer un problème à l'avenir si l'ordre du tableau change. J'ai une autre logique pour implémenter cela en utilisant Named Array. Mais je ne sais pas comment.

S'il vous plaît quelqu'un peut-il me donner une meilleure suggestion pour mettre en œuvre ce genre de scénario ??

Répondre

2

Index par leur nom (si cela est suffisamment unique):

var availableStatus = { 
         visible : { Name: 'visible' }, 
         hidden : { Name: 'hidden' }, 
         deny : { Name: 'deny' }, 
         allow : { Name: 'allow' }, 
         destroy : { Name: 'destroy' } 
        }; 

var Status = availableStatus.visible; 

if(Status === availableStatus.visible) 
    //do this 
else if(Status === availableStatus.hidden) 
    //do this 

Cela suppose qu'il ya un peu plus d'informations sur l'état des objets plus tard, ou les fonctions de travail sur ces données. Si vous voulez juste pour stocker une chaîne que vous pouvez simplement le faire comme ceci:

var availableStatus = { 
         visible : {}, 
         hidden : {}, 
         deny : {}, 
         allow : {}, 
         destroy : {} 
        }; 

et ont la même fonctionnalité.

+0

C'est ce que je fais, effectivement comme un remplacement 'enum' JavaScript –

0

Que diriez-vous de cela? Vous pouvez stocker plus d'informations dans le dictionnaire affecté à l'état, par ex. "can_recieve_messages".

var availableStatus = { 
          'visible': { id: 0 }, 
          'hidden': { id: 1}, 
          'deny' : { id: 2} [...] 
         }; 

    var Status = availableStatus.visible; 

    switch (Status) { 
     case availableStatus.visible: 
      // on visible 
      break; 
     case availableStatus.hidden: 
      // on hidden 
      break; 
     [...] 
    } 
0
var availableStatus ={}; 

         availableStatus.['visible']='visible'; 
         availableStatus.['hidden']= 'hidden'; 
         availableStatus.['deny']= 'deny'; 
         availableStatus.['deny']= 'deny' ; 
         availableStatus.['destroy']= 'destroy'; 

j'ai st nom clé comme identique à la valeur que vous pouvez utiliser le nom de la clé et de la valeur

availableStatus.['test']= 'deny' ; 

et vous pouvez utiliser quoi que ce soit, sans la crainte de l'ordre si vous écrivez availableStatus.destroy ensuite pUT détruire

et availableStatus.test puis sortie sera deny

Questions connexes