Symbol.toPrimitive
Symbol.toPrimitive
はシンボルで、あるオブジェクトを対応するプリミティブ値に変換するために呼び出される関数値のプロパティを指定します。
試してみましょう
解説
Symbol.toPrimitive
プロパティにより (関数値として使用して)、オブジェクトがプリミティブ値に変換することができるようになります。関数は、プリミティブ値の結果として好ましい型を指定する文字列引数の hint
と一緒に呼び出されます。 hint
引数は、 "number
", "string
", "default
" のいずれかになります。
Symbol.toPrimitive のプロパティ属性 |
|
---|---|
書込可能 | 不可 |
列挙可能 | 不可 |
設定可能 | 不可 |
例
オブジェクトから変換されたプリミティブ値の修正
次の例は Symbol.toPrimitive
プロパティがオブジェクトから変換されたプリミティブ値を修正する方法を説明します。
// Symbol.toPrimitive プロパティを持たないオブジェクト。
var obj1 = {};
console.log(+obj1); // NaN
console.log(`${obj1}`); // "[object Object]"
console.log(obj1 + ''); // "[object Object]"
// Symbol.toPrimitive プロパティを持つオブジェクト。
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"
仕様書
Specification |
---|
ECMAScript Language Specification # sec-symbol.toprimitive |
ブラウザーの互換性
BCD tables only load in the browser