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()
.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
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
Compatibilidade de navegador
BCD tables only load in the browser
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.