【问题标题】:Object property constants in ECMAScript?ECMAScript 中的对象属性常量?
【发布时间】:2011-05-07 15:16:51
【问题描述】:
我已经看到了一些关于 ECMAScript Harmony 的建议,即能够使用关键字 const 指定常量。然而,它似乎只在块作用域中可用(即FunctionBody 和Program)。有没有办法将常量定义为对象属性(想象一下myObj.STATUS_OK)?
我想建议的方法是通过Object.definePropert(y/ies) 使用properties,但这似乎不是很方便,是吗?
【问题讨论】:
标签:
javascript
constants
ecmascript-harmony
【解决方案1】:
似乎const 与环境框架绑定更相关,因此与对象和属性略有不同。
也就是说,在全局变量上,这正是它所做的:
const a = 10;
Object.getOwnPropertyDescriptor(window, "a");
/*
Object:
configurable: true,
enumerable: true
value: 10
writable: false
*/
如果您正在寻找速记,那么您可以制作一个非常简单的宏。
在您的情况下,另一种方法是使用 get-only 值:
var myObj = {
get STATUS_OK(){ return 42; }
};
【解决方案2】:
只是一个想法。
将它们声明为:
var CONST =
{
ONE: 1,
TWO: 2
};
Object.seal(CONST);
并将它们用作:
CONST.ONE, CONST.TWO