【问题标题】:Is it possible to get the description value of a defined Symbol in JavaScript? [duplicate]是否可以在 JavaScript 中获取已定义符号的描述值? [复制]
【发布时间】:2016-11-08 17:01:35
【问题描述】:

假设我有一个符号,例如const sym = Symbol('foo');。现在,有没有一种方法可以在不依赖字符串操作的情况下从该符号中获取值 foo

我预计 sym.toString() 会返回 'foo',但它会返回 Symbol(foo)

更新

我选择了这个老套的解决方案,直到找到更好的解决方案:)

const key = Symbol.keyFor(sym) || (sym = sym.toString(), sym.substring(7, sym.length - 1));

【问题讨论】:

    标签: javascript node.js


    【解决方案1】:

    Symbol.keyFor。但它只适用于全局注册的符号

    const works = Symbol.for('foo');
    const key1 = Symbol.keyFor(works); // "foo"
    
    const doesNotWork = Symbol('foo');
    const key2 = Symbol.keyFor(doesNotWork); // undefined
    

    我猜测私有符号是有意为之的。您可以随时对其进行修补:

    const patched = Symbol('foo');
    patched.key = 'foo';
    

    【讨论】:

    • 我收到了undefined ...
    • @TheReason 一个未定义的什么?
    • keyundefined
    • 实际上,文档说,为了使用Symbol.keyFor,必须使用Symbol.for 来注册一个全局符号。在建议的情况下,符号不是全局的。这一个解决方案......
    • 我想应该是let sym = Symbol.for('Hello everybody!'); Symbol.keyFor(sym); // 'Hello everybody!'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-30
    • 2011-09-26
    • 2022-01-08
    • 2014-09-02
    • 2017-04-11
    相关资源
    最近更新 更多