JavaScript valueOf vs. toString Methods

Summary: in this tutorial, you will learn the differences between the valueOf() and toString() methods of object in JavaScript.

The object has two similar methods:

  • valueOf() method returns a primitive value of an object.
  • toString() method return the string representation of an object.

Note that a string is also a primitive value in JavaScript.

The valueOf() and toString() methods serve different purposes. The valueOf() is usually called internally by JavaScript to convert an object to a primitive value.

For example, if you call the valueOf() method on some built-in object like Date, it’ll return a timestamp:

let d = new Date('2024-01-01 12:45:30');
console.log(d.valueOf());Code language: JavaScript (javascript)

Output:

1704087930000Code language: JavaScript (javascript)

In this example, the valueOf() returns a timestamp that represents the Date object.

The toString() method will return a string that represents the Date object:

let d = new Date('2024-01-01 12:45:30');
console.log(d.toString());Code language: JavaScript (javascript)

Output:

Mon Jan 01 2024 12:45:30 GMT+0700 (Indochina Time)Code language: JavaScript (javascript)

For most objects, the valueOf() returns the objects themselves whereas the toString() returns the [object Object].

For example:

const person = {
  name: 'John Doe',
  age: 30,
  sayHi: () => {
    console.log(`Hi`);
  },
};

console.log(person.valueOf());
console.log(person.toString());Code language: JavaScript (javascript)

Output:

{ name: 'John Doe', age: 30, sayHi: [Function: sayHi] }
[object Object]Code language: JavaScript (javascript)

If you don’t want the default return value ([object Object]) of the toString() method, you can override it like this:

const person = {
  name: 'John Doe',
  age: 30,
  sayHi: function () {
    console.log(`Hi`);
  },
  toString: function () {
    return `{name: "${this.name}", age: ${this.age}}`;
  },
};

console.log(person.toString());Code language: JavaScript (javascript)

Output:

{name: "John Doe", age: 30}Code language: JavaScript (javascript)

Summary

  • valueOf() method returns a primitive value, called internally by JavaScript, and often used in comparison and mathematical operations.
  • toString() method returns a string representation of an object and often used in string contexts.
Was this tutorial helpful ?