Symbol.toPrimitiveSymbol.toPrimitive — это встроенный символ, который позволяет тебе определить собственную логику для преобразования объекта в примитивное значение. Когда JavaScript нужен примитив (например, при арифметических операциях или конкатенации строк), он автоматически вызывает этот метод.
hintМетод получает аргумент hint, который указывает на ожидаемый тип преобразования. Возможны три значения:
"number" — срабатывает при арифметических операциях или вызовах Number()"string" — срабатывает при строковых операциях или вызовах String()"default" — срабатывает, когда JavaScript не может определить ожидаемый тип (например, при сравнении ==)const money = {
[Symbol.toPrimitive](hint) {
if (hint === "number") return 100;
if (hint === "string") return "$100";
return 100; // default
}
};
console.log(+money); // 100 (hint: "number")
console.log(`${money}`); // $100 (hint: "string")
console.log(money + ""); // 100 (hint: "default")
Без Symbol.toPrimitive JavaScript прибегает к valueOf() и toString(), которые дают меньше контроля. Этот символ позволяет тебе обработать все три сценария преобразования в одном предсказуемом методе, что делает твои объекты поведение согласованным в разных контекстах.
Метод Symbol.toPrimitive вызывается JavaScript автоматически, когда объект нужно преобразовать в примитивное значение, и параметр hint всегда указывает либо 'number', либо 'string', либо 'default'.
Новый — ещё не проверен сообществом
Вы