Symbol.toStringTag

Esta tradução está incompleta. Ajude a traduzir este artigo em inglês

O símbolo Symbol.toStringTag é uma propriedade com valor string que é usada para a criação de uma descrição de string de um objeto padrão. É acessado internalmente pelo método Object.prototype.toString().

Property attributes of Symbol.toStringTag
Writable no
Enumerable no
Configurable no

Exemplos

Tags padrões

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]"
// ... e mais

Símbolos built-in toStringTag 

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

Classes personalizadas para objeto tag

Quando cria sua própria classe, o JavaScript padroniza para "Object" tag:

class ValidatorClass {}

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

Tag costumizada com toStringTag

Agora, com a ajuda do toStringTag, você é capaz de costumizar sua própria tag:

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

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

toStringTag disponível em todos os objetos protótipos da DOM 

Devido a uma mudança nas especificações WebIDL spec change em meados de 2020, navegadores estão adicionando uma propriedade Symbol.toStringTag para todos os objetos protótipos da DOM . Por exemplo, para acessar a propriedade Symbol.toStringTag no HTMLButtonElement:

let test = document.createElement('button');
test.toString(); // Retorna [object HTMLButtonElement]
test[Symbol.toStringTag];  // Retona HTMLButtonElement

Especificações

Especificação
ECMAScript (ECMA-262)
The definition of 'Symbol.toStringTag' in that specification.

Compatibilidade de navegador

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
toStringTagChrome Full support 49Edge Full support 15Firefox Full support 51IE No support NoOpera Full support 36Safari Full support 10WebView Android Full support 49Chrome Android Full support 49Firefox Android Full support 51Opera Android Full support 36Safari iOS Full support 10Samsung Internet Android Full support 5.0nodejs Full support 6.0.0
Full support 6.0.0
Full support 4.0.0
Disabled
Disabled From version 4.0.0: this feature is behind the --harmony runtime flag.
toStringTag available on all DOM prototype objectsChrome Full support 50Edge Full support 79Firefox Full support 78IE No support NoOpera Full support 37Safari Full support 14WebView Android Full support 50Chrome Android Full support 50Firefox Android No support NoOpera Android Full support 37Safari iOS Full support 14Samsung Internet Android Full support 5.0nodejs No support No

Legend

Full support  
Full support
No support  
No support
User must explicitly enable this feature.
User must explicitly enable this feature.

Veja também