Symbol.toStringTag

Известный символ Symbol.toStringTag - это строковое значение свойства, которое используется при создании строки описания объекта по умолчанию. Доступ к нему осуществляется через Object.prototype.toString() метод.

Интерактивный пример

Атрибуты свойства Symbol.toStringTag
Записываемое нет
Перечисляемое нет
Настраиваемое нет

Описание

Многие Javascript типы имеют теги по умолчанию:

js
Object.prototype.toString.call("foo"); // "[object String]"
Object.prototype.toString.call([1, 2]); // "[object Array]"
Object.prototype.toString.call(3); // "[object Number]"
Object.prototype.toString.call(true); // "[object Boolean]"
Object.prototype.toString.call(undefined); // "[object Undefined]"
Object.prototype.toString.call(null); // "[object Null]"
// ... and more

Другие имеют встроенный символ toStringTag:

js
Object.prototype.toString.call(new Map()); // "[object Map]"
Object.prototype.toString.call(function* () {}); // "[object GeneratorFunction]"
Object.prototype.toString.call(Promise.resolve()); // "[object Promise]"
// ... and more

При создании собственного класса JavaScript по умолчанию использует тег "Object":

js
class ValidatorClass {}

Object.prototype.toString.call(new ValidatorClass()); // "[object Object]"

С помощью toStringTag можно установить свой собственный тег:

js
class ValidatorClass {
  get [Symbol.toStringTag]() {
    return "Validator";
  }
}

Object.prototype.toString.call(new ValidatorClass()); // "[object Validator]"

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

Specification
ECMAScript Language Specification
# sec-symbol.tostringtag

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

BCD tables only load in the browser

Смотрите также