Symbol.prototype.toString()
Базовый уровень Широко доступен
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в различных версиях браузеров. Она доступна в браузерах с сентября 2015 года.
Метод toString() объекта Symbol возвращает строку, представляющую значение этого символа.
Попробуйте
console.log(Symbol("desc").toString());
// Expected output: "Symbol(desc)"
console.log(Symbol.iterator.toString());
// Expected output: "Symbol(Symbol.iterator)
console.log(Symbol.for("foo").toString());
// Expected output: "Symbol(foo)"
// console.log(Symbol('foo') + 'bar');
// Expected output: Error: Can't convert symbol to string
Синтаксис
toString()
Параметры
Нет.
Возвращаемое значение
Строка, представляющая указанное значение символа.
Описание
Объект Symbol переопределяет метод toString объекта Object; он не наследует Object.prototype.toString(). Для значений Symbol метод toString возвращает описательную строку в формате "Symbol(description)", где description — это описание символа.
Метод toString() требует, чтобы его значение this было примитивом Symbol или объектом-оберткой. Он выдает TypeError для других значений this, не пытаясь привести их к значениям символов.
Поскольку Symbol имеет метод [Symbol.toPrimitive](), этот метод всегда имеет приоритет над toString() при приведении объекта Symbol к строке. Однако, поскольку Symbol.prototype[Symbol.toPrimitive]() возвращает примитив символа, а примитивы символов выдают TypeError при неявном преобразовании в строку, метод toString() никогда не вызывается неявно языком. Чтобы преобразовать символ в строку, вы должны явно вызвать его метод toString() или использовать функцию String().
Примеры
Использование toString()
Symbol("desc").toString(); // "Symbol(desc)"
// well-known symbols
Symbol.iterator.toString(); // "Symbol(Symbol.iterator)"
// global symbols
Symbol.for("foo").toString(); // "Symbol(foo)"
Неявный вызов toString()
Единственный способ заставить JavaScript неявно вызывать toString() вместо [Symbol.toPrimitive]() для объекта-обертки символа — это сначала удалить метод [Symbol.toPrimitive]().
Предупреждение: На практике так делать не следует. Никогда не изменяйте встроенные объекты, если вы точно не знаете, что делаете.
delete Symbol.prototype[Symbol.toPrimitive];
console.log(`${Object(Symbol("foo"))}`); // "Symbol(foo)"
Спецификации
Совместимость с браузерами
| Настольные компьютеры | Мобильные | Сервер | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
toString |
38 |
12 |
36 |
25 |
9 |
38 |
36 |
25 |
9 |
3.0 |
38 |
9 |
1.0.0 |
1.0 |
0.12.0 |
См. также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toString