サーチ…


構文

  • シンボル()
  • シンボル(説明)
  • Symbol.toString()

備考

ECMAScript 2015の仕様19.4シンボル

シンボルプリミティブ型の基礎

SymbolはES6の新しいプリミティブ型です。シンボルは主にプロパティキーとして使用され、その主な特徴の1つは、同じ記述を持っていても、 ユニークであるということです。つまり、 symbolstringある他のプロパティキーと名前の衝突を起こすことはありません。

const MY_PROP_KEY = Symbol();
const obj = {};

obj[MY_PROP_KEY] = "ABC";
console.log(obj[MY_PROP_KEY]); 

この例では、 console.logの結果はABCます。

名前付きシンボルは次のようにすることもできます:

const APPLE    = Symbol('Apple');
const BANANA   = Symbol('Banana');
const GRAPE    = Symbol('Grape');

これらの値はそれぞれ一意であり、上書きすることはできません。

プリミティブシンボルの作成時にオプションのパラメータ(description)指定すると、デバッグには使用できますが、シンボル自体にはアクセスできませんSymbol.for()グローバル共有シンボルの登録/参照の方法についてはSymbol.for()例を参照してください)。

シンボルを文字列に変換する

他のほとんどのJavaScriptオブジェクトとは異なり、連結を実行するとき、シンボルは自動的に文字列に変換されません。

let apple = Symbol('Apple') + ''; // throws TypeError!

その代わりに、必要に応じて明示的に文字列に変換する必要があります(たとえば、デバッグメッセージで使用できるシンボルのテキスト記述を取得するには) toStringメソッドまたはStringコンストラクタを使用する必要があります。

const APPLE = Symbol('Apple');
let str1 = APPLE.toString(); // "Symbol(Apple)"
let str2 = String(APPLE);    // "Symbol(Apple)"

Symbol.for()を使用してグローバルな共有シンボルを作成する

Symbol.forメソッドを使用すると、グローバルシンボルを名前で登録およびルックアップできます。指定されたキーで最初に呼び出されると、新しいシンボルが作成され、レジストリに追加されます。

let a = Symbol.for('A');

次回Symbol.for('A')を呼び出すと、新しいシンボルの代わりに同じシンボルが返されます( Symbol('A')とは対照的に、同じ記述を持つユニークなシンボルが新たに生成されますSymbol('A') )。

a === Symbol.for('A') // true

しかし

a === Symbol('A') // false


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow