是否可以在 JavaScript 中获取已定义符号的描述值

Is it possible to get the description value of a defined Symbol in JavaScript?

本文关键字:定义符 定义 符号 描述 获取 JavaScript 是否      更新时间:2023-09-26

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

我希望sym.toString()返回'foo'但它返回Symbol(foo)

更新

我接受了这个笨拙的解决方案,直到我找到一个更好的解决方案:)

const key = Symbol.keyFor(sym) || (sym = sym.toString(), sym.substring(7, sym.length - 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';