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) | ? | ? | ? |