This page was translated from English by the community. Learn more and join the MDN Web Docs community.

View in English Always switch to English

Symbol.toStringTag

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨апрель 2017 г.⁩.

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

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

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

console.log(Object.prototype.toString.call(new ValidatorClass()));
// Expected output: "[object Validator]"
Атрибуты свойства 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® 2026 Language Specification
# sec-symbol.tostringtag

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

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