Enum en Javascript... [Résolu]

Signaler
Messages postés
6
Date d'inscription
samedi 19 novembre 2005
Statut
Membre
Dernière intervention
3 mars 2006
-
 OléOlé -
Bonjour a tous
Y a-t-il en Javascript un enumerateur equivalent a "enum" en C & C++ ?
Si la reponse est "non", quelqu'un aurait-il implemente un objet permettant de "singer" cet "enum" ou eventuellement un "set" ?
Merci

7 réponses

Messages postés
19
Date d'inscription
dimanche 30 mai 2004
Statut
Membre
Dernière intervention
30 septembre 2013
1
Voici une solution à ce problème: Enum pour JavaScript

Ce n'est pas la meilleure, mais je la trouve plus proche du comportement du type Enum en Java.

Bon code!

TriumpHS
Ok. Et s'est franchement bien expliqué!
Messages postés
152
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
17 janvier 2014
3
Précise ton besoin, à quoi pourrait te servir un énumérateur ?
A+.
Messages postés
6
Date d'inscription
samedi 19 novembre 2005
Statut
Membre
Dernière intervention
3 mars 2006

En fait j'ai l'habitude de programmer en C++ ou VB mais je debute en Javascript. En C et autres, le type énumération de données "enum" permet d'obtenir des identificateurs mnémoniques pour un ensemble de valeurs entières, initialisées ou non, par exemple :
enum SAISON {printemps, ete, automne, hiver};enum TAlign {AlignNone -1,AlignLeft 1, AlignTop = 2, AlignRight = 4, AlignBottom = 8};
Bon, pratiquement c'est cette derniere structure dont j'ai besoin. Un type "alignement" de layers dans une classe de gestion de l'espace client d'une page web (ClientArea). Le but est bien sur de pouvoir gerer les redimensionnements de fenetre...
Bien sur je pourrais definir tout simplement des constantes, mais en perdant en lisibilite et structuration du programme, et egalement qq avantages fonctionnels et structurels des "enum", comme l'initialisation automatique des valeurs non initialisees implicitement, par exemple.
Est-ce assez clair ?

PolarMan
Messages postés
152
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
17 janvier 2014
3
Ah, je vois, tu peux peut-être remplacer cette notion par un objet possédant les attributs correspondant à ton énumération :

var alignObject = new AlignObject();

function AlignObject()
{
   this.alignNone = -1;
   this.alignLeft = 1;
   etc
}


Comme ça tu peux remplacer l'accès à ton énumérateur par un accès à l'attribut correspondant de alignObject.

A+.
Messages postés
6
Date d'inscription
samedi 19 novembre 2005
Statut
Membre
Dernière intervention
3 mars 2006

Yep, j'avais pense a un object...
Le probleme est que, pour chaque "equivalent-enum", je devrai coder un nouvel object...
Merci pour ton aide, les grands esprits se rencontrent.
Mais vu qu'il n'y a pas d'equivalent-enum, je vais utiliser des constantes, et plus tard si j'ai le temps je coderai un object generique, avec un Array dans le constructeur ou des params ouverts (si cela existe en JS), que je deriverai eventuellement pour d'autres appli.
Ciao & Takk

PolarMan
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
27
tu peux faire comme ca pour des enums :


var tonEnum = 
{
      enum1 = 1, 
      enum2 = 2
}

puis ensuite 

alert(tonEnum.enum1) // retournera 1

tu peux aussi te servir de ca pour faire des namespaces 

var tonNamespace = 
{
      tafunction : function(){alert('truc');}
}

etc... 

var tonNamespace = 
{
      tafunction:function{ alert(tonNamespace.enums.align.left)},
      enums: 
      {
            align : 
            {
               left:1, 
               right:2
            }
       }
}

tonNamespace.taFunction(); //affichera 1 :)



<HR>



Cyril - MVS - MCP ASP
Messages postés
15
Date d'inscription
lundi 30 août 2004
Statut
Membre
Dernière intervention
11 février 2008

Merci pour l'astuce attention juste aux ':' au lieu du '='

var tonEnum = 
{
      enum1 : 1, 
      enum2 : 2
}


ol