Spec-Zone.ru › JavaScript

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)"

Спецификации

Спецификация
Спецификация языка ECMAScript® 2027
# sec-symbol.prototype.tostring

Совместимость с браузерами

Настольные компьютеры Мобильные Сервер
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

См. также

  • Object.prototype.toString()

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API