JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptのsymbol.descriptionプロパティの使い方をわかりやすく解説

JavaScriptのSymbol(シンボル)は、必ず一意になる値を生成できるプリミティブ型です。シンボルには生成時に任意の「説明(description)」を持たせることができ、symbol.descriptionプロパティでその文字列を取得できます。また、[Symbol.toPrimitive]メソッドを使うと、Symbolオブジェクトをプリミティブ値として扱うことができます。

symbol.descriptionプロパティとは

symbol.descriptionは、シンボルを作成する際にSymbol()へ渡した説明文字列を返す読み取り専用プロパティです。説明を指定しなかった場合はundefinedが返ります。

const sym = Symbol('john');
console.log(sym.description); // 結果: "john"

const sym2 = Symbol();
console.log(sym2.description); // 結果: undefined

なお、シンボルは暗黙的に文字列へ変換されないため、文字列として利用したい場合はString(sym)sym.descriptionを使います。

Symbolオブジェクトをプリミティブ値に変換する構文

シンボルをプリミティブ値として変換するときの基本構文は次のとおりです。

Symbol()[Symbol.toPrimitive](hint);

サンプルコード1:登録されている関数を確認する

次の例では、「結果」ボタンをクリックするとval[Symbol.toPrimitive]の中身がコンソールに出力されます。

<!DOCTYPE html>
<html>
<body>
<h2>デモページ</h2>
<p>クリックして結果を表示します。</p>
<button onclick="display()">結果</button>
<p id="test"></p>
<script>
    function display() {
        const val = Symbol('john');
        console.log(val[Symbol.toPrimitive]);
    }
</script>
</body>
</html>

実行結果

JavaScriptのsymbol.descriptionプロパティの使い方をわかりやすく解説

「結果」ボタンをクリックしてください。

JavaScriptのsymbol.descriptionプロパティの使い方をわかりやすく解説

コンソールには、シンボルをプリミティブ値へ変換するための組み込み関数(ƒ () { [native code] })が表示されます。

サンプルコード2:引数を渡して実行する

続いて、[Symbol.toPrimitive]に引数を渡して呼び出し、戻り値をコンソールへ出力する例です。

<!DOCTYPE html>
<html>
<body>
<h2>デモページ</h2>
<p>クリックして結果を表示します。</p>
<button onclick="display()">結果</button>
<p id="test"></p>
<script>
    function display() {
        const val = Symbol(2465);
        var res = val[Symbol.toPrimitive](99);
        console.log(res);
    }
</script>
</body>
</html>

実行結果

JavaScriptのsymbol.descriptionプロパティの使い方をわかりやすく解説

「結果」ボタンをクリックすると、結果がコンソールに表示されます。

JavaScriptのsymbol.descriptionプロパティの使い方をわかりやすく解説

コンソールにはSymbol(2465)が出力されます。[Symbol.toPrimitive]は、対象がシンボルであれば受け取った引数に関係なくそのシンボル自身を返す仕様のためです。

まとめ

  • symbol.description:シンボル生成時に渡した説明文字列を取得できる(未指定の場合はundefined)。
  • [Symbol.toPrimitive]:シンボルをプリミティブ値として扱うための組み込みメソッド。シンボル自身を返す。
  • シンボルは暗黙的な文字列変換が行われないため、明示的にString()descriptionを利用するのが安全。

  1. JavaScriptのlastIndexプロパティとは?正規表現のマッチ位置を取得する方法

    lastIndexプロパティとは JavaScriptにおける「lastIndex」プロパティは、正規表現オブジェクトが持つプロパティの一つで、直前のマッチが終了した位置(インデックス)を返します。そして、次回の検索はその位置から再開されるという仕組みになっています。 重要な注意点として、lastIndexプロパティは「g」(グローバル)フラグが設定されている場合にのみ機能します。「g」フラグがない状態では、lastIndexは常に0のまま変化しないため、連続した検索を行うことができません。 以下は、JavaScriptでlastIndexプロパティを使用する際のコード例です。 サンプルコード

  2. JavaScriptのsourceプロパティとは?正規表現パターンテキストを取得する方法を解説

    JavaScriptのsourceプロパティは、RegExp(正規表現)オブジェクトに設定されたパターン文字列そのものを返すプロパティです。g(グローバルマッチ)やi(大文字・小文字を区別しない)などのフラグは結果に含まれず、マッチング対象となる純粋な正規表現テキストのみを取得できます。 動的に正規表現を組み立てたい場合や、デバッグ時に実際に適用されているパターンを確認したい場合などに活用できる便利なプロパティです。 基本構文 const regex = /pattern/flags; console.log(regex.source); // パターン文字列のみが返される サンプルコード