W3cubDocs

/JavaScript

Symbol.prototype.toString()

The toString() method of Symbol values returns a string representing this symbol value.

Try it

Syntax

js
toString()

Parameters

None.

Return value

A string representing the specified symbol value.

Description

The Symbol object overrides the toString method of Object; it does not inherit Object.prototype.toString(). For Symbol values, the toString method returns a descriptive string in the form "Symbol(description)", where description is the symbol's description.

The toString() method requires its this value to be a Symbol primitive or wrapper object. It throws a TypeError for other this values without attempting to coerce them to symbol values.

Because Symbol has a [@@toPrimitive]() method, that method always takes priority over toString() when a Symbol object is coerced to a string. However, because Symbol.prototype[@@toPrimitive]() returns a symbol primitive, and symbol primitives throw a TypeError when implicitly converted to a string, the toString() method is never implicitly called by the language. To stringify a symbol, you must explicitly call its toString() method or use the String() function.

Examples

Using toString()

js
Symbol("desc").toString(); // "Symbol(desc)"

// well-known symbols
Symbol.iterator.toString(); // "Symbol(Symbol.iterator)"

// global symbols
Symbol.for("foo").toString(); // "Symbol(foo)"

Implicitly calling toString()

The only way to make JavaScript implicitly call toString() instead of [@@toPrimitive]() on a symbol wrapper object is by deleting the @@toPrimitive method first.

Warning: You should not do this in practice. Never mutate built-in objects unless you know exactly what you're doing.

js
delete Symbol.prototype[Symbol.toPrimitive];
console.log(`${Object(Symbol("foo"))}`); // "Symbol(foo)"

Specifications

Browser compatibility

Desktop Mobile Server
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on IOS Samsung Internet WebView Android Deno Node.js
toString 38 12 36 25 9 38 36 25 9 3.0 38 1.0 0.12.0

See also

© 2005–2023 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