是否有可能得到在JavaScript中定义的符号的描述值?

假设我有一个符号,如const sym = Symbol('foo'); 。 现在,有没有办法从那个符号得到值foo而不依赖于string操作?

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

更新

我解决这个hacky的解决scheme,直到我find一个更好的一个:)

 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 

我猜测私人符号是通过devise来实现的。 你可以随时猴子补丁:

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