コンテンツにスキップ

JavaScript/symbol

出典: フリー教科書『ウィキブックス(Wikibooks)』


symbol

[編集]

symbol は、JavaScriptで一意の識別子を生成するためのプリミティブデータ型です。Symbol() コンストラクタを使用して作成され、主にオブジェクトのプロパティキーとして使用されます。

構文

[編集]
// Symbol の作成
const symbol1 = Symbol(); // 一意の Symbol
const symbol2 = Symbol("説明文"); // 説明文付き Symbol
const globalSymbol = Symbol.for("shared"); // 共有 Symbol

説明

[編集]
  • symbol 型は常に一意であるため、他の値や同じ説明文で作成された他の symbol と一致しません。
  • Symbol.for() を使用すると、共有シンボルを作成し、同じキーで取得できます。
  • シンボルは暗黙的な型変換が行われず、string 型などと自動的に結合されることはありません。

使用例

[編集]
// Symbol の作成
const uniqueSymbol = Symbol("説明文");
const anotherSymbol = Symbol("説明文");
console.log(uniqueSymbol === anotherSymbol); // false(一意性が保証される)

// オブジェクトのプロパティキーとしての使用
const obj = {
  [uniqueSymbol]: "値",
};
console.log(obj[uniqueSymbol]); // "値"

// Symbol.for を使用した共有シンボル
const sharedSymbol1 = Symbol.for("共有キー");
const sharedSymbol2 = Symbol.for("共有キー");
console.log(sharedSymbol1 === sharedSymbol2); // true

// Symbol.keyFor を使用して共有シンボルのキーを取得
console.log(Symbol.keyFor(sharedSymbol1)); // "共有キー"

// Symbol は暗黙的な型変換を許可しない
const sym = Symbol("テスト");
// console.log("値は " + sym); // TypeError: Cannot convert a Symbol value to a string

注意点

[編集]

組み込みの Symbol

[編集]

JavaScript にはいくつかの組み込みシンボルが存在し、特定の言語機能をカスタマイズできます。

シンボル名 説明
Symbol.iterator イテラブルオブジェクトを作成するためのシンボル。
Symbol.toStringTag Object.prototype.toString の出力をカスタマイズするためのシンボル。
Symbol.asyncIterator 非同期イテラブルオブジェクトを作成するためのシンボル。

関連項目

[編集]

参考

[編集]