Symbol.prototype.toString()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.

概述

toString() 方法返回当前 symbol 对象的字符串表示。

语法

symbol.toString();

描述

Symbol 对象拥有自己的 toString 方法,因而遮蔽了原型链上的 Object.prototype.toString()

symbol 原始值不能转换为字符串

symbol 原始值不能转换为字符串,所以只能先转换成它的包装对象,再调用 toString() 方法:

js
Symbol("foo") + "bar";
// TypeError: Can't convert symbol to string
Symbol("foo").toString() + "bar";
// "Symbol(foo)bar",就相当于下面的:
Object(Symbol("foo")).toString() + "bar";
// "Symbol(foo)bar"

示例

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

// 内置通用(well-known)symbol
Symbol.iterator.toString(); // "Symbol(Symbol.iterator)

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

规范

Specification
ECMAScript Language Specification
# sec-symbol.prototype.tostring

浏览器兼容性

BCD tables only load in the browser

参见