Symbol【シンボル】オブジェクト

メモ ビルトイン シンボル プロパティ 関数 メソッド

メモ

概要

外部リンク

ビルトイン シンボル

ビルトイン シンボル
(実装)
説明
@@hasInstance
Symbol.hasInstance
関数 インスタンス確認
instanceof【インスタンス判定 演算子】で使用
@@isConcatSpreadable
Symbol.isConcatSpreadable
Boolean 連結配列展開
Array.concat【連結】で使用
@@iterator
Symbol.iterator
関数イテレータ作成 (for-of)
@@match
Symbol.match
正規表現関数 正規表現検索 (詳細) 下記で使用
RegExp[ @@match ]【検索 (詳細)】
String.match【正規表現検索 (詳細)】
@@matchAll
Symbol.matchAll
正規表現関数 正規表現検索 (詳細イテレータ) 下記で使用
RegExp[ @@matchAll ]【検索 (詳細イテレータ)】
String.matchAll【正規表現検索 (詳細イテレータ)】
@@replace
Symbol.replace
正規表現関数 置換 (正規表現可・関数指定可) 下記で使用
RegExp[ @@replace ]【置換 (関数指定可)】
String.replace【置換 (正規表現可・関数指定可)】
@@search
Symbol.search
正規表現関数 正規表現検索 (簡易) 下記で使用
RegExp[ @@search ] 【検索 (簡易)】
String.search【正規表現検索 (簡易)】
@@species
Symbol.species
関数コンストラクタ定義
派生オブジェクトのコンストラクタで使用
@@split
Symbol.split
正規表現関数 分割 (正規表現可) 下記で使用
RegExp[ @@split ]【分割】
String.split【分割 (正規表現可)】
@@toPrimitive
Symbol.toPrimitive
関数 プリミティブ値取得
Date[ @@toPrimitive ]【プリミティブ値取得】
Symbol[ @@toPrimitive ]【プリミティブ値取得】
@@toStringTag
Symbol.toStringTag
文字列タグ
Object.toString【文字列変換】で使用
下記以外は、定義可能
標準組み込みオブジェクト
または
[ @@toStringTag ] プロパティ の定義があるオブジェクト
@@unscopables
Symbol.unscopables
オブジェクトwith 除外プロパティ

プロパティ

プロパティ説明
Symbol.prototype[ @@toStringTag ]タグ
[Symbol.toStringTag]
Symbol.prototype.constructorコンストラクタ定義
Symbol.prototype.description 説明文
Symbol.prototypeプロトタイプ

関数

構文説明
Symbol( [ description ] ) ローカルシンボル生成 (一意)

メソッド

メソッド説明
Symbol.prototype [ @@toPrimitive ] ( hint ) プリミティブ値取得
[Symbol.toPrimitive]
Symbol. for( key ) グローバルシンボル生成
Symbol. keyFor( sym ) キー取得 (グローバルシンボル)
Symbol.prototype. toString( )文字列変換
Symbol.prototype. valueOf( )プリミティブ値取得

// ビルトイン シンボル
console.log(Symbol.search);
// 出力:Symbol("Symbol.search")

// ローカルシンボル
const sym1 = Symbol('Description');
console.log(sym1);
// 出力:Symbol("Description")
const sym2 = Symbol('Description');
console.log(sym2);
// 出力:Symbol("Description")
console.log(sym1 === sym2);
// 出力:false

// グローバルシンボル
const symGlobal1 = Symbol.for('Key');
console.log(symGlobal1);
// 出力:Symbol("Key")
const symGlobal2 = Symbol.for('Key');
console.log(symGlobal2);
// 出力:Symbol("Key")
console.log(symGlobal1 === symGlobal2);
// 出力:true

// description【説明文】プロパティ
console.log(Symbol.search.description);
// 出力:Symbol.search
console.log(sym1.description);
// 出力:Description
console.log(sym2.description);
// 出力:Description
console.log(symGlobal1.description);
// 出力:Key
console.log(symGlobal2.description);
// 出力:Key