我已经看到了ECMAScript Harmony的一些提议,因为它们能够使用关键字const
指定常量。但是,它似乎仅在块范围内可用(即FunctionBody
和Program
)。有没有办法将常量定义为对象属性(想象myObj.STATUS_OK
)?
我猜建议的方法是通过properties
使用Object.definePropert(y/ies)
,但这似乎不太方便,现在是吗?
答案 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