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 の定義
標準 初期定義。
ECMAScript Latest Draft (ECMA-262)
Symbol.toPrimitive の定義
ドラフト  

ブラウザー実装状況

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
toPrimitiveChrome 完全対応 47Edge 完全対応 15Firefox 完全対応 44IE 未対応 なしOpera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 47Chrome Android 完全対応 47Firefox Android 完全対応 44Opera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 ありnodejs 完全対応 6.0.0

凡例

完全対応  
完全対応
未対応  
未対応

関連情報

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

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