是否有可能得到在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';