const AES_256_CBC = Symbol();
const encHeaders = {
AES_256_CBC: "foo",
}
這當然不起作用,因爲密鑰實際上是字符串"AES_256_CBC"
。
通常你只希望初始化對象爲空哈希後設置你的屬性,
var encHeaders = {};
encHeaders[AES_256_CBC] = "foo";
但我不能這樣做和已encHeaders
是const
,可以嗎?
const AES_256_CBC = Symbol();
const encHeaders = {
AES_256_CBC: "foo",
}
這當然不起作用,因爲密鑰實際上是字符串"AES_256_CBC"
。
通常你只希望初始化對象爲空哈希後設置你的屬性,
var encHeaders = {};
encHeaders[AES_256_CBC] = "foo";
但我不能這樣做和已encHeaders
是const
,可以嗎?
想通了。你可以用方括號做到這一點:
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
但我不能做到這一點,有
encHeaders
是const
,可以嗎?
是的,你可以。 const
對值沒有影響,它隻影響綁定本身。也就是說,您不能將賦值爲encHeaders
的新值,但您肯定可以改變該值本身(如果它是可變的)。
符號屬性不會顯示在'console.log'中嗎?當我嘗試它時,它看起來好像沒有被添加。 – mpen
「console.log」沒有規範,所以答案是:取決於環境。 –
我認爲你正在尋找'const encHeaders = Ojbect.freeze({[AES_256_CBC]:「foo」});' – Bergi