Object property constants in ECMAScript?
I've seen some proposals for ECMAScript Harmony in terms 开发者_JAVA技巧of being able to specify constants with the keyword const
. However, it seems to be only available in block scopes (i.e., FunctionBody
and Program
). Is there a way to define constants as an object property (imagine myObj.STATUS_OK
)?
I guess the suggested way is to use properties
via Object.definePropert(y/ies)
, but that does not seem very convenient, now is it?
It seems that const
is more related to environment frame bindings, and is thus a slightly different beast to objects and properties.
That said, on globals that's exactly what it does:
const a = 10;
Object.getOwnPropertyDescriptor(window, "a");
/*
Object:
configurable: true,
enumerable: true
value: 10
writable: false
*/
If you're looking for shorthand then you can make a pretty simple macro.
In your case, an alternative would be to have a get-only value:
var myObj = {
get STATUS_OK(){ return 42; }
};
Just an idea.
Declare them as:
var CONST =
{
ONE: 1,
TWO: 2
};
Object.seal(CONST);
And use them as:
CONST.ONE, CONST.TWO
精彩评论