我想知道是否有一种很好的方法来获取符号的描述。
例如,
var s = Symbol(5);
toString 的默认实现将简单地打印 Symbol(5)
我想找到一种提取实际描述的方法,即 5
我想知道是否有一种很好的方法来获取符号的描述。
例如,
var s = Symbol(5);
toString 的默认实现将简单地打印 Symbol(5)
我想找到一种提取实际描述的方法,即 5
Symbol.description返回符号的描述。只需在您的情况下执行 s.description 即可。
String(symbol).slice(7, -1) || null
这是有效的,因为String(symbol)显式地将符号强制转换为字符串,例如Symbol('test')被强制转换为"Symbol(test)".
对从 7 到 -1 进行拼接会在两个括号之间进行拼接,从而捕获描述 test
注意:这可能不适用于对象描述(例如Symbol({test})),因为对象被强制转换为"[object Object]"
没有巧妙的方法可以做到这一点。但是,如果您已在全局注册表中注册了符号,则可以使用Symbol.keyFor():
var s = Symbol.for(5);
console.log(Symbol.keyFor(s));
symbol-description 在 npm 上打包返回所提供符号的描述:
const symDesc = require('symbol-description')
symDesc(Symbol('foo')) // foo