假设我有一个符号,例如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';
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句