JavaScript

Symbol オブジェクト

 編集:2022.08.12 by T.A.

データ型 symbol は、です。

Symbol() 関数は、symbol 型の値を返します。これは組み込みオブジェクトを公開するための静的プロパティを持ち、グローバル シンボル レジストリーを公開するための静的メソッドを持つので、組み込みオブジェクト クラスのようにも見えますが、コンストラクターとしての機能を持たず、"new Symbol()" はサポートされていません。

Symbol() から返されるすべてのシンボル値は一意です。シンボル値は、オブジェクト プロパティの識別子として使用できます。これがデータ型の主な利用目的ですが、不透明なデータ型の有効化や、実装サポートされている一意の識別子として機能するなど、他の利用目的も存在します。目的や使用方法に関する詳細を知りたい場合、 を見てください。

Symbol()
関数。シンボル値を返す。
Symbol.toString()
シンボルを文字列として返す。
Symbol.description
説明文を取得する。
Symbol.hasInstance
Symbol.isConcatSpreadable
Symbol.iterator
Symbol.toPrimitive
Symbol.for()
グローバル シンボル レジストリーを扱う。

グローバル シンボル テーブル(または「レジストリー」)と実行時環境の間を仲介します。シンボル レジストリーは、主に JavaScript コンパイラー インフラストラクチャが構築しており、その中のシンボルの内容は、JavaScript 実行時インフラストラクチャでは上記のメソッド以外で扱えません。

Symbol.keyFor()
グローバル シンボル レジストリーを扱う。

グローバル シンボル テーブル(または「レジストリー」)と実行時環境の間を仲介します。シンボル レジストリーは、主に JavaScript コンパイラー インフラストラクチャが構築しており、その中のシンボルの内容は、JavaScript 実行時インフラストラクチャでは上記のメソッド以外で扱えません。

¶他不明

¶不明

// 2 つのシンボルを同じ説明文で使用
let Sym1 = Symbol("Sym");
let Sym2 = Symbol("Sym");
D=Sym1 === Sym2;        //=false

シンボルは固有であることが保証されます。同じ説明文でたくさんのシンボルが生成されても、異なる値を持ちます。


テスト