2015-11-04 150 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”没有规范,所以答案是:取决于环境。 –

相关问题