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

const object1 = {
  [Symbol.toPrimitive](hint) {
    if (hint === "number") {
      return 42;
    }
    return null;
  },
};

console.log(+object1);
// Expected output: 42

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
SobrescribirNo
NumerableNo
ConfigurableNo

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® 2025 Language Specification
# sec-symbol.toprimitive

Compatibilidad con navegadores

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
toPrimitive

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Véase también