JavaScript符号类型:(非字符串对象键)

Web*_*ner 7 javascript string key object ecmascript-6

什么是ECMAScript 6草案规范中提到的"符号"javascript类型?

引用规范:

Symbol类型是可用作Object属性的键的所有非String值的集合.

每个可能的Symbol值都是唯一且不可变的.

符号值具有一个名为[[Private]]的可观察属性,其不可变值为true或false.私有符号是符号值,其[[Private]]属性的值为true.

我认为对象键只是字符串,我并不孤单.引用这个被接受的答案:

...对象键总是字符串......

你能解释一下符号类型是什么,并展示它的用法.我正试图理解规范.

谢谢!

Ber*_*rgi 6

我以为对象键只是字符串

你是对的,但仅适用于EcmaScript 5.ES 6 /和谐是新事物的选秀!

我正试图理解规范

这只是一个草案,正在迅速变化.如何使用符号以及是否或如何通过任意脚本创建符号似乎尚未解决(扫描版本以进行更改).

如果向下滚动到该文档的最末端(甚至在附录F下面),例如,您将看到第8.4.4节:已移出的符号异类对象.它指出

异域符号对象为所有必要的内部方法提供了替代定义.

例如,您可以在8.1.7.4 熟知的符号和内在函数中看到它们.对于Symbol构造函数的建议用途(以及仍存在的问题/开放式问题),请查看这些 稻草人页面或此wiki站点.