This page was translated from English by the community.Learn more and join the MDN Web Docs community.
Symbol.toPrimitive
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since апрель 2017 г..
Symbol.toPrimitive является символом (symbol), который описывает свойство объекта как функцию, которая вызывается при преобразовании объекта в соответствующее примитивное значение.
In this article
Интерактивный пример
const object1 = { [Symbol.toPrimitive](hint) { if (hint === "number") { return 42; } return null; },};console.log(+object1);// Expected output: 42Описание
С помощью свойстваSymbol.toPrimitive (которое описывается как функция), объект может быть приведён к примитивному типу. Функция вызывается со строковым аргументомhint, который передаёт желаемый тип примитива. Значением аргументаhint может быть одно из следующих значений"number","string", и"default".
Примеры
Описанные ниже примеры показывают как с помощью свойстваSymbol.toPrimitive можно привести объект к примитивному типу.
// Объект без свойства Symbol.toPrimitivevar obj1 = {};console.log(+obj1); // NaNconsole.log(`${obj1}`); // "[object Object]"console.log(obj1 + ""); // "[object Object]"// Объект со свойством Symbol.toPrimitivevar obj2 = { [Symbol.toPrimitive](hint) { if (hint == "number") { return 10; } if (hint == "string") { return "hello"; } return true; },};console.log(+obj2); // 10 -- желаемый тип (hint) - "number"console.log(`${obj2}`); // "hello" -- желаемый тип (hint) - "string"console.log(obj2 + ""); // "true" -- желаемый тип (hint) - "default"Спецификации
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-symbol.toprimitive> |