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 September 2015.
El símbolo conocido como Symbol.toStringTag
es una propiedad con valor de cadena que se utiliza en la creación de la descripción de cadena por defecto de un objeto. Se accede a ella internamente mediante el método Object.prototype.toString()
.
Pruébalo
class ValidatorClass {
get [Symbol.toStringTag]() {
return "Validator";
}
}
console.log(Object.prototype.toString.call(new ValidatorClass()));
// Expected output: "[object Validator]"
Atributos de la propiedad Symbol.toStringTag | |
---|---|
Sobrescribir | No |
Numerable | No |
Configurable | No |
Ejemplos
Etiquetas por defecto
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
Símbolos toStringTag integrados
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
Clases personalizadas por defecto en la etiqueta objeto
Al crear su propia clase, JavaScript utiliza por defecto la etiqueta "Object":
class ValidatorClass {}
Object.prototype.toString.call(new ValidatorClass()); // "[object Object]"
Etiqueta personalizada con toStringTag
Ahora, con la ayuda de toStringTag
, puede establecer su propia etiqueta personalizada:
class ValidatorClass {
get [Symbol.toStringTag]() {
return "Validator";
}
}
Object.prototype.toString.call(new ValidatorClass()); // "[object Validator]"
toStringTag disponible en todos los objetos del prototipo DOM
Debido a un cambio en las especificaciones de WebIDL a mediados de 2020, los navegadores están añadiendo una propiedad Symbol.toStringTag
a todos los objetos prototipo del DOM. Por ejemplo, para acceder a la propiedad Symbol.toStringTag
de HTMLButtonElement
:
let test = document.createElement("button");
test.toString(); // Devuelve [object HTMLButtonElement]
test[Symbol.toStringTag]; // Devuelve HTMLButtonElement
Especificaciones
Specification |
---|
ECMAScript® 2025 Language Specification # sec-symbol.tostringtag |
Compatibilidad con navegadores
BCD tables only load in the browser