ECMAScript中的对象属性常量?

时间:2011-05-07 15:16:51

标签: javascript constants const ecmascript-harmony

我已经看到了ECMAScript Harmony的一些提议,因为它们能够使用关键字const指定常量。但是,它似乎仅在块范围内可用(即FunctionBodyProgram)。有没有办法将常量定义为对象属性(想象myObj.STATUS_OK)?

我猜建议的方法是通过properties使用Object.definePropert(y/ies),但这似乎不太方便,现在是吗?

2 个答案:

答案 0 :(得分:6)

似乎const与环境框架绑定更相关,因此与对象和属性的关系略有不同。

那就是说,在全局变量上它正是它的作用:

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

如果您正在寻找速记,那么您可以制作一个非常简单的宏。

在您的情况下,另一种方法是获得一个只用的值:

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

答案 1 :(得分:1)

只是一个想法。

将它们声明为:

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

Object.seal(CONST);

并将它们用作:

   CONST.ONE, CONST.TWO