假设我有一个符号,例如const sym = Symbol('foo');
。现在,有没有办法从该符号中获取值foo
而不依赖于字符串操作?
我希望sym.toString()
返回'foo'
,但会返回Symbol(foo)
。
我决定使用这个hacky解决方案,直到找到更好的解决方案:)
const key = Symbol.keyFor(sym) || (sym = sym.toString(), sym.substring(7, sym.length - 1));
答案 0 :(得分:6)
有Symbol.keyFor
。但它只适用于全球注册的符号
DataTable dt = new DataTable();
dt = Ctype(dataGridView1.DataSource,DataTable).copy();
我猜测私人符号是按照设计做到的。你总是可以修补它:
const works = Symbol.for('foo');
const key1 = Symbol.keyFor(works); // "foo"
const doesNotWork = Symbol('foo');
const key2 = Symbol.keyFor(doesNotWork); // undefined