This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.
The valueOf() method of Symbol values returns this symbol value.
const symbol = Symbol("foo");
console.log(typeof Object(symbol));
// Expected output: "object"
console.log(typeof Object(symbol).valueOf());
// Expected output: "symbol"
valueOf()
None.
The primitive value of the specified Symbol object.
The valueOf() method of Symbol returns the primitive value of a Symbol object as a Symbol data type.
JavaScript calls the valueOf() method to convert an object to a primitive value. You rarely need to invoke the valueOf() method yourself; JavaScript automatically invokes it when encountering an object where a primitive value is expected.
const sym = Symbol("example");
sym === sym.valueOf(); // true
| Desktop | Mobile | Server | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
valueOf |
38 | 12 | 36 | 25 | 9 | 38 | 36 | 25 | 9 | 3.0 | 38 | 9 | 1.0.0 | 1.0 | 0.12.0 |
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/valueOf