We're looking for a user researcher to understand the needs of developers and designers. Is this you or someone you know? Check out the post: https://mzl.la/2IGzdXS

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 Latest Draft (ECMA-262)
Symbol.toPrimitive の定義


We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

機能 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,