获取ES6符号的描述

时间:2015-05-18 11:14:45

标签: javascript symbols ecmascript-6

我想知道是否有一种很好的方式来获得符号的描述。

例如,

var s = Symbol(5);

toString的默认实现只会打印     符号(5)

我想找到一种方法来提取实际的描述,即5

4 个答案:

答案 0 :(得分:3)

 String(symbol).slice(7, -1) || null

这是有效的,因为String(symbol)明确地将符号强制转换为字符串,例如Symbol('test')被强制导入"Symbol(test)"

在from 7到-1之间进行拼接会在两个括号之间进行拼接,从而捕获描述test

注意:这可能不适用于对象描述(例如Symbol({test})),因为对象被强制转换为"[object Object]"

答案 1 :(得分:3)

var array = Object.entries(students).map(([key, student ]) => ({ Name: student.replace(/_/g, " "), Id: key, Value: student }) 返回符号说明。 只需对您的情况进行s.description。

  

REF: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/description

答案 2 :(得分:0)

没有简洁的方法来做到这一点。但是,如果您在全局注册表中注册了符号,则可以使用Symbol.keyFor()

var s = Symbol.for(5);
console.log(Symbol.keyFor(s));

答案 3 :(得分:-2)

npm 上的

symbol-description

返回提供的符号的描述:

const symDesc = require('symbol-description')
symDesc(Symbol('foo')) // foo

在我阅读this answer here后,我刚刚发表了这篇文章。