2015-11-04 162 views
1

例如是否可以使用符號鍵創建一個const對象?

const AES_256_CBC = Symbol(); 

const encHeaders = { 
    AES_256_CBC: "foo", 
} 

這當然不起作用,因爲密鑰實際上是字符串"AES_256_CBC"

通常你只希望初始化對象爲空哈希後設置你的屬性,

var encHeaders = {}; 
encHeaders[AES_256_CBC] = "foo"; 

但我不能這樣做encHeadersconst,可以嗎?

+2

我認爲你正在尋找'const encHeaders = Ojbect.freeze({[AES_256_CBC]:「foo」});' – Bergi

回答

1

想通了。你可以用方括號做到這一點:

const AES_256_CBC = Symbol(); 

const encHeaders = Object.freeze({ 
    [AES_256_CBC]: "foo", 
}); 

console.log(encHeaders[AES_256_CBC]); // foo 

的方括號也added in ES6

更新:修訂,包括Bergi's suggestion

3

但我不能做到這一點,有encHeadersconst,可以嗎?

是的,你可以。 const對值沒有影響,它隻影響綁定本身。也就是說,您不能賦值爲encHeaders的新值,但您肯定可以改變該值本身(如果它是可變的)。

+0

符號屬性不會顯示在'console.log'中嗎?當我嘗試它時,它看起來好像沒有被添加。 – mpen

+2

「console.log」沒有規範,所以答案是:取決於環境。 –

相關問題