Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【JavaScript ECMAScript】Symbol::Symbol.toPrimitive静的データプロパティの使い方

Symbol.toPrimitive静的データプロパティの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

Symbol.toPrimitiveプロパティは、オブジェクトがプリミティブ値に変換される際の挙動をカスタマイズするためのメソッドのキーとして使用される、特別なSymbol値を保持するプロパティです。JavaScriptのプログラムでは、オブジェクトを文字列や数値といったプリミティブ値として扱いたい状況がよくあります。例えば、+演算子でオブジェクトと文字列を結合しようとする場合や、alert()関数でオブジェクトを表示しようとする場合などに、JavaScriptエンジンは自動的にオブジェクトをプリミティブ値に変換しようとします。

この自動変換のプロセスを開発者が細かく制御するために、任意のオブジェクトはSymbol.toPrimitiveという名前のメソッドを定義することができます。このメソッドは、オブジェクトがプリミティブ値に変換される際の「ヒント」(目的が文字列か、数値か、またはデフォルトか)を表す引数を一つ受け取ります。開発者はこのヒントに基づいて、オブジェクトから適切なプリミティブ値(文字列、数値、真偽値など)を返すようにメソッドを実装する必要があります。

これにより、開発者はオブジェクトのプリミティブ表現を、JavaScriptの標準的な変換ルールに縛られずに柔軟に制御できます。例えば、カスタムオブジェクトをDateオブジェクトのように、状況に応じて文字列や数値として振る舞わせることが可能となり、コードの意図をより明確にし、予測可能な振る舞いを実現する手助けとなります。

公式リファレンス: Symbol.toPrimitive

構文(syntax)

1class MyObject {
2  constructor(value) {
3    this.value = value;
4  }
5
6  [Symbol.toPrimitive](hint) {
7    if (hint === 'number') {
8      return this.value;
9    }
10    if (hint === 'string') {
11      return `MyObject(${this.value})`;
12    }
13    // 'default' またはそれ以外のヒントの場合
14    return this.value;
15  }
16}

引数(parameters)

引数なし

引数はありません

戻り値(return)

戻り値なし

戻り値はありません

関連コンテンツ

関連プログラミング言語