是否可以使用符号键创建一个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
的新值,但您肯定可以改变该值本身(如果它是可变的)。
+0
符号属性不会显示在'console.log'中吗?当我尝试它时,它看起来好像没有被添加。 – mpen
+2
“console.log”没有规范,所以答案是:取决于环境。 –
我认为你正在寻找'const encHeaders = Ojbect.freeze({[AES_256_CBC]:“foo”});' – Bergi