2011-05-07 2 views
3

J'ai vu quelques propositions pour ECMAScript Harmony en termes de pouvoir spécifier des constantes avec le mot-clé const. Cependant, il semble que ce soit seulement disponible dans les étendues de blocs (c'est-à-dire, FunctionBody et Program). Existe-t-il un moyen de définir des constantes en tant que propriété d'objet (imaginez myObj.STATUS_OK)?Constantes de propriété d'objet dans ECMAScript?

Je suppose que la manière suggérée est d'utiliser properties via Object.definePropert(y/ies), mais cela ne semble pas très pratique, maintenant c'est?

Répondre

6

Il semble que const est plus lié aux liaisons de cadres d'environnement, et est donc une bête légèrement différente des objets et des propriétés.

Cela dit, sur c'est exactement GLOBALS ce qu'il fait:

const a = 10; 
Object.getOwnPropertyDescriptor(window, "a"); 
/* 
    Object: 
     configurable: true, 
     enumerable: true 
     value: 10 
     writable: false 
*/ 

Si vous cherchez un raccourci, vous pouvez alors faire une macro assez simple.

Dans votre cas, une alternative serait d'avoir un rendez-vous seule valeur:

var myObj = { 
    get STATUS_OK(){ return 42; } 
}; 
1

Juste une idée.

les déclarer comme:

var CONST = 
{ 
    ONE: 1, 
    TWO: 2 
}; 

Object.seal(CONST); 

et les utiliser comme:

CONST.ONE, CONST.TWO 
Questions connexes