Symbol.toStringTag

Добревідомий символ Symbol.toStringTag - це властивість з рядковим значенням, що використовується для створення заданого рядкового опису об'єкта. До неї звертається метод Object.prototype.toString().

Атрибути поля Symbol.toStringTag
Доступний для запису ні
Доступний для переліку ні
Доступний для налаштування ні

Приклади

Теги за замовчуванням

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]"
// ... та інші

Вбудовані символи toStringTag

Object.prototype.toString.call(new Map());       // "[object Map]"
Object.prototype.toString.call(function* () {}); // "[object GeneratorFunction]"
Object.prototype.toString.call(Promise.resolve()); // "[object Promise]"
// ... та інші

Користувацькі класи з тегом за замовчуванням

При створенні власного класу, JavaScript за замовчуванням виставляє тег "Object":

class ValidatorClass {}

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

Користувацький тег з toStringTag

Отже, за допомогою toStringTag ви можете налаштувати свій власний тег:

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

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

toStringTag доступний на усіх DOM-об'єктах

Завдяки змінам у специфікації WebIDL в середині 2020, переглядачі додають властивість Symbol.toStringTag до усіх DOM-об'єктів. Наприклад, для звернення до властивості Symbol.toStringTag у HTMLButtonElement:

let test = document.createElement('button');
test.toString(); // Вертає [object HTMLButtonElement]
test[Symbol.toStringTag];  // Вертає HTMLButtonElement

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

Специфікація
ECMAScript (ECMA-262)
The definition of 'Symbol.toStringTag' in that specification.

Сумісність з веб-переглядачами

BCD tables only load in the browser

Див. також