Symbol.toPrimitive — метод, вызываемый при приведении объекта к примитиву
- Принимает
hint: 'number', 'string' или 'default'
- Если определён — используется вместо
valueOf и toString
const money = {
amount: 100, currency: 'USD',
[Symbol.toPrimitive](hint) {
if (hint === 'number') return this.amount;
if (hint === 'string') return `${this.amount} ${this.currency}`;
return this.amount; // default
}
};
+money // 100 (hint: 'number')
`${money}` // '100 USD' (hint: 'string')
money + 0 // 100 (hint: 'default')