Get the description of a ES6 Symbol

后端 未结 4 516
渐次进展
渐次进展 2020-11-29 10:11

I wonder if there is a nice way to get the descriptions of a Symbol.

For example,

var s = Symbol(5);

The default implementation of

相关标签:
4条回答
  • 2020-11-29 10:49

    There is no neat way to do this. However, if you have registered a symbol in the global registry, you can use Symbol.keyFor():

    var s = Symbol.for(5);
    console.log(Symbol.keyFor(s));
    
    0 讨论(0)
  • 2020-11-29 10:53

    symbol-description package on npm

    Returns description of provided symbol:

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

    It was published by me just now after reading this answer here.

    0 讨论(0)
  • 2020-11-29 11:12

    Symbol.description returns description of the symbol. Simply do s.description in your case.

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

    0 讨论(0)
  • 2020-11-29 11:13
     String(symbol).slice(7, -1) || null
    

    This works because String(symbol) explicitly coerce the symbol into a string e.g. Symbol('test') gets coerced into "Symbol(test)".

    Doing a splicing on the from 7 to -1 does a splicing between the two brackets, thus capturing the description test

    Note: that this may not work for object descriptions (e.g. Symbol({test})) as objects gets coerced into "[object Object]"

    0 讨论(0)
提交回复
热议问题