Symbol.toStringTag

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

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

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

Описание

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

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:

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

class ValidatorClass {}

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

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

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

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