【问题标题】:How to convert a JavaScript Symbol to a string without the "Symbol(" prefix?如何将 JavaScript 符号转换为没有“符号(”前缀的字符串?
【发布时间】:2020-02-18 08:12:11
【问题描述】:

例如,如果我使用toString()

let s = Symbol('abc')
console.log(s.toString())

我明白了:

'Symbol(abc)'

如何获得:

'abc'

代替?

我知道如何通过字符串操作来做到这一点,但我希望有一个可能更有效的解决方案来直接获取值。

我正在使用 Symbol 来实现 Enum: What is the preferred syntax for defining enums in JavaScript? 并希望在包含类上使用 toJSON() 对其进行序列化。

在 Node.js v10.15.1 中测试。

【问题讨论】:

  • .slice 字符串?
  • @CertainPerformance 我希望有一个不涉及可能低效的字符串操作的解决方案。
  • 对字符串进行切片并不是低效的。如果您遇到性能问题,请运行性能测试以确定占用资源的脚本部分 - 字符串切片几乎肯定不会是其中之一。 (担心它是相当过早的优化)

标签: javascript


【解决方案1】:

使用描述获取价值

s.description

当我们创建符号时,我们传递该符号的描述。

了解更多read this.

【讨论】:

    【解决方案2】:

    我会使用s.description。它将返回Symbol描述

    更深层次的解释here

    【讨论】:

    • 仅在以后的浏览器中(甚至不是边缘)
    • @Bravo 是的,页面的“第 4 阶段”提案部分似乎还没有标准化?但很高兴知道。
    • 它将成为标准 - 但您知道它不适用于 Microsoft 的任何产品
    • @Bravo ...直到基于 Chromium 的 Edge 版本发布。
    猜你喜欢
    • 1970-01-01
    • 2016-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-09
    • 1970-01-01
    • 2011-10-05
    • 1970-01-01
    相关资源
    最近更新 更多