--- sidebar_position: 7 --- # Преобразование объектов в примитивы Преобразование объекта в примитив вызывается автоматически многими встроенными функциями и операторами, которые ожидают примитив в качестве значения. Существует всего 3 типа (хинта) для этого: - "string" (для alert и других операций, которым нужна строка) - "number" (для математических операций) - "default" (для некоторых других операторов, обычно объекты реализуют его как "number") Спецификация явно описывает для каждого оператора, какой ему следует использовать хинт. Алгоритм преобразования таков: 1. Сначала вызывается метод `obj[Symbol.toPrimitive](hint)`, если он существует, 2. В случае, если хинт равен "string" - происходит попытка вызвать `obj.toString()` и `obj.valueOf()`, смотря что есть. 3. В случае, если хинт равен "number" или "default" - происходит попытка вызвать `obj.valueOf()` и `obj.toString()`, смотря что есть. Все эти методы должны возвращать примитив (если определены). На практике часто бывает достаточно реализовать только `obj.toString()` в качестве универсального метода для преобразований к строке, который должен возвращать удобочитаемое представление объекта для целей логирования или отладки.