MDN wants to talk to developers like you: https://qsurvey.mozilla.com/s3/a3e7b5301fea

Symbol.toPrimitive

Symbol.toPrimitive は、オブジェクトを対応するプリミティブ値に変換するために呼び出される、関数の値を持つプロパティを指定する symbol です。

Symbol.toPrimitive のプロパテイ属性
書込可能 不可
列挙可能 不可
設定可能 不可

説明

(関数値として使用される) Symbol.toPrimitive の助けにより、オブジェクトをプリミティブ値に変換できます。関数は、プリミティブ値の結果として好ましい型を指定する文字列引数の hint と一緒に呼び出されます。hint 引数は、"number", "string", "default" のいずれかになります。

次の例は、Symbol.toPrimitive プロパティがオブジェクトから変換されたプリミティブ値を修正する方法を説明します。

// Symbol.toPrimitive プロパティを持たないオブジェクト。
var obj1 = {};
console.log(+obj1);     // NaN
console.log(`${obj1}`); // "[object Object]"
console.log(obj1 + ""); // "[object Object]"

// An object with Symbol.toPrimitive property.
var obj2 = {
  [Symbol.toPrimitive](hint) {
    if (hint == "number") {
      return 10;
    }
    if (hint == "string") {
      return "hello";
    }
    return true;
  }
};
console.log(+obj2);     // 10      -- hint は "number"
console.log(`${obj2}`); // "hello" -- hint は "string"
console.log(obj2 + ""); // "true"  -- hint は "default"

仕様

仕様書 策定状況 備考
ECMAScript 2015 (6th Edition, ECMA-262)
Symbol.toPrimitive の定義
標準 I初期定義。
ECMAScript 2017 Draft (ECMA-262)
Symbol.toPrimitive の定義
ドラフト

ブラウザの実装状況

機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari
基本サポート ? 44 (44) ? ? ?
機能 Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
基本サポート ? ? 44.0 (44) ? ? ?

関連情報

ドキュメントのタグと貢献者

 このページの貢献者: Marsf, YuichiNukiyama
 最終更新者: Marsf,