【问题标题】:How do symbols work?符号是如何工作的?
【发布时间】:2013-07-06 08:18:11
【问题描述】:

Node.JS v0.11.3 声称支持带有 --harmony_symbols 标志的 ECMAScript 6 符号(请参阅 here)。最新草稿says

使用键值标识属性。键值是 ECMAScript 字符串值或符号值。

我试过下面的例子

var mySymbol = new Symbol('Test symbol');
console.log(mySymbol.name); // prints 'Test symbol', as expected

var a = {};
a[mySymbol] = 'Hello!';

但最后一行出现错误

TypeError:从符号到字符串的转换

符号是如何工作的?我的例子是错的,还是 Node.JS 实际上 支持符号?

【问题讨论】:

  • 我什至在最新的草稿中都找不到Symbol 构造函数。
  • 那只是描述数据的type。例如,在上方您会看到The Null Type。也没有Null构造函数。
  • @Randomblue:这只是Symbol 类型的描述。没有指定 Symbol() 构造函数来创建它们,就像您使用它一样。草稿尚未完成:-)
  • 作为参考,根本不支持的东西通常会失败,并显示不太具体的错误消息。错误甚至提到了符号这一事实非常强烈地暗示它们受到支持(至少在某种程度上;有多好,我不知道)。

标签: javascript node.js ecmascript-6


【解决方案1】:

你应该尝试不使用new

var mySymbol = Symbol('Test symbol');
console.log(mySymbol.name); // prints 'Test symbol', as expected

var a = {};
a[mySymbol] = 'Hello!';

【讨论】:

    猜你喜欢
    • 2018-11-16
    • 2010-10-13
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-09
    • 2014-01-21
    相关资源
    最近更新 更多