LoginSignup
0
1

More than 5 years have passed since last update.

[JavaScript] symbol がグローバルシンボルかどうか調べる

Last updated at Posted at 2017-02-02

ある symbol が、グローバルシンボルかどうか調べれるのかなーって思ったら、keyFor で簡単にできる感じでした。

あと、せっかくなので wellknown-symbol かどうかも判定してみたいと思います。


  const isGlobalSymbol = (symbol) => {
    return Symbol.keyFor(symbol) !== undefined;
  };

  const isLocalSymbol = (symbol) => {
    return Symbol.keyFor(symbol) === undefined;
  };

  const isWellknownSymbol = (function(){
    const wellknown = Object.getOwnPropertyNames(Symbol)
      .map(name => Symbol[name])
      .filter(val => typeof val === 'symbol');

    return (symbol) => {
      return wellknown.includes(symbol);
    };
  })();

確認

isGlobalSymbol(Symbol.for('global'))    //=> true
isLocalSymbol(Symbol.for('global'))     //=> false
isWellknownSymbol(Symbol.for('global')) //=> false

isGlobalSymbol(Symbol('local'))    //=> false
isLocalSymbol(Symbol('local'))     //=> true
isWellknownSymbol(Symbol('local')) //=> false

isGlobalSymbol(Symbol.toPrimitive)    //=> false
isLocalSymbol(Symbol.toPrimitive)     //=> true
isWellknownSymbol(Symbol.toPrimitive) //=> true

利用場面は知らんです。

終わりです。

参考URL

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1