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 Status Comment
ECMAScript 2015 (6th Edition, ECMA-262)
Определение 'Symbol.toStringTag' в этой спецификации.
Стандарт Initial definition.
ECMAScript Latest Draft (ECMA-262)
Определение 'Symbol.toStringTag' в этой спецификации.
Черновик

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

Update compatibility data on GitHub
КомпьютерыМобильныеServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidFirefox для AndroidOpera для AndroidSafari on iOSSamsung InternetNode.js
toStringTagChrome Полная поддержка 49Edge Полная поддержка 15Firefox Полная поддержка 51IE Нет поддержки НетOpera Полная поддержка ДаSafari Полная поддержка ДаWebView Android Полная поддержка 49Chrome Android Полная поддержка 49Firefox Android Полная поддержка 51Opera Android Полная поддержка ДаSafari iOS Полная поддержка ДаSamsung Internet Android Полная поддержка Даnodejs Полная поддержка 6.0.0
Полная поддержка 6.0.0
Полная поддержка 4.0.0
Отключено
Отключено From version 4.0.0: this feature is behind the --harmony runtime flag.

Легенда

Полная поддержка  
Полная поддержка
Нет поддержки  
Нет поддержки
Пользователь должен сам включить эту возможность.
Пользователь должен сам включить эту возможность.

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