是否可以使用符号键创建一个const对象?

时间:2015-11-04 00:40:54

标签: ecmascript-6

e.g。

const AES_256_CBC = Symbol();

const encHeaders = {
   AES_256_CBC: "foo",
}

这当然不起作用,因为密钥实际上是文字字符串"AES_256_CBC"

通常,您只需在将对象初始化为空哈希后设置属性,

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

但是我不能这样做encHeaders成为const,我可以吗?

2 个答案:

答案 0 :(得分:3)

  

但我无法做到这一点且encHeadersconst,我可以吗?

是的,你可以。 const对值没有影响,它只会影响绑定本身。也就是说,你不能encHeaders分配一个新值,但你当然可以改变值本身(如果它是可变的)。

答案 1 :(得分: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