2011-05-07 84 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