我想知道是否有一种简便的方法来获取符号的描述。
例如,
var s = Symbol(5);
默认的toString实现仅会打印Symbol(5)
我希望找到一种方法来提取实际的描述,即5
我想知道是否有一种简便的方法来获取符号的描述。
例如,
var s = Symbol(5);
默认的toString实现仅会打印Symbol(5)
我希望找到一种方法来提取实际的描述,即5
Symbol.description
返回符号的描述。
在您的情况下,只需使用 s.description
。
private resolveSymbol(symbol: Symbol): string { const regExp = /\(([^)]+)\)/; const names = regExp.exec(symbol.toString()) || []; return names[1]; }
- Rushi patelSymbol(")")
和 Symbol("")
不起作用。请不要使用正则表达式来获取描述。改为使用 String(symbol).slice(7,-1)
,但请注意只有真正的 Symbol.prototype.description
才能区分 Symbol()
和 Symbol("")
。 - Sebastian Simon String(symbol).slice(7, -1) || null
String(symbol)
将符号显式地转换为字符串,例如Symbol('test')
被转换为"Symbol(test)"
。test
。
注意:这对于对象描述(例如Symbol({test})
)可能无效,因为对象被强制转换为"[object Object]"
。没有简单的方法来做这件事。但是,如果您已经在全局注册表中注册了一个符号,您可以使用 Symbol.keyFor()
函数:
var s = Symbol.for(5);
console.log(Symbol.keyFor(s));
Symbol.prototype.description
。 - Assaf Sapirsymbol-description
npm包返回提供的符号的描述:
const symDesc = require('symbol-description')
symDesc(Symbol('foo')) // foo
我在阅读了这个答案后刚刚发布了它。
/^Symbol\((.+?)\)$/.exec("Symbol(5)");
或者切片方法:"Symbol(5)".slice(7,-1);
- HacketoSymbol
的字符串表示吗? - Bergi