Перейти к основному содержимому
Об авторе
Проекты
Знания
Знания/JavaScript/symbol-to-primitive

Как работает `Symbol.toPrimitive` и в чём его отличие от `valueOf`/`toString`?

УглублённыйПеременные и типы данных
  • 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')
  • Главная
  • Об авторе
  • Проекты
  • Знания
Логотип nKolmykov