2011-05-07 77 views
3

我已经看到了ECMAScript Harmony的一些提案,可以用关键字const指定常量。但是,它似乎只在区域范围内可用(即,FunctionBodyProgram)。有没有办法将常量定义为对象属性(想象一下myObj.STATUS_OK)?ECMAScript中的对象属性常量?

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

回答

6

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

这就是说,在全局这也正是它的作用:

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

如果你正在寻找的简写,那么你可以做一个非常简单的宏。

在你的情况,另一种办法是有一个get-只值:

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

只是一个想法。

声明为:

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

Object.seal(CONST); 

,并用它们为:

CONST.ONE, CONST.TWO