> Как модифицировать класс в JavaScript для кастомного сравнения экземпляра с числом (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Инити
Стек: JavaScript
> Пример ответа
Для кастомного сравнения экземпляра класса с числом в JavaScript можно переопределить метод valueOf(). Этот метод вызывается при неявном приведении типа (например, в операторах сравнения <, >, ==). Также можно использовать Symbol.toPrimitive для более гибкого контроля.
Пример с valueOf():
JAVASCRIPTclass Temperature {constructor(celsius) {this.celsius = celsius;}valueOf() {return this.celsius;}}const temp = new Temperature(25);console.log(temp > 20); // trueconsole.log(temp == 25); // true
Пример с Symbol.toPrimitive (позволяет задать поведение для разных типов):
JAVASCRIPTclass Price {constructor(amount) {this.amount = amount;}[Symbol.toPrimitive](hint) {if (hint === 'number') {return this.amount;}if (hint === 'string') {return `$${this.amount}`;}return this.amount; // default}}const price = new Price(100);console.log(price > 50); // trueconsole.log(price + 10); // 110console.log(String(price)); // "$100"
Важно: Для строгого сравнения (===) эти методы не работают - оно всегда сравнивает ссылки. Если нужно кастомное строгое сравнение, используйте отдельный метод (например, equals()).
> Похожие задачи по frontend
Как из объекта String получить примитив строки в JavaScript?
Может ли Promise одновременно зарезолвиться и зареджектиться в JavaScript?
Как написать метод объекта в JavaScript для получения значений по ключам в виде строки
Зачем использовать скобочки у функции в JavaScript
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью