Symbol.toPrimitive

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 Symbol.toPrimitive es un símbolo que especifica una propiedad con valor de función que se llama para convertir un objeto en un valor primitivo correspondiente.

Pruébalo

Descripción

Con la ayuda de la propiedad Symbol.toPrimitive (utilizada como valor de la función), se puede convertir un objeto en un valor primitivo. La función se llama con un argumento de cadena hint, que especifica el tipo preferido del valor primitivo resultante. El argumento hint puede ser uno de los siguientes: "number", "string" y "default".

Atributos de la propiedad Symbol.toPrimitive
Sobrescribir No
Numerable No
Configurable No

Ejemplos

Modificar los valores primitivos convertidos desde un objeto

El siguiente ejemplo describe cómo la propiedad Symbol.toPrimitive puede modificar el valor primitivo convertido desde un objeto.

js
// Un objeto sin la propiedad Symbol.toPrimitive.
const obj1 = {};
console.log(+obj1); // NaN
console.log(`${obj1}`); // "[object Object]"
console.log(obj1 + ""); // "[object Object]"

// Un objeto con la propiedad Symbol.toPrimitive.
const obj2 = {
  [Symbol.toPrimitive](hint) {
    if (hint === "number") {
      return 10;
    }
    if (hint === "string") {
      return "hello";
    }
    return true;
  },
};
console.log(+obj2); // 10        — hint es "number"
console.log(`${obj2}`); // "hello"   — hint es "string"
console.log(obj2 + ""); // "true"    — hint es "default"

Especificaciones

Specification
ECMAScript Language Specification
# sec-symbol.toprimitive

Compatibilidad con navegadores

BCD tables only load in the browser

Véase también