The toString()
method returns a string representing the object.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Syntax
obj.toString()
Return value
A string representing the object.
Description
Every object has a toString()
method that is automatically called when the object is to be represented as a text value or when an object is referred to in a manner in which a string is expected. By default, the toString()
method is inherited by every object descended from Object
. If this method is not overridden in a custom object, toString()
returns "[object type]", where type
is the object type. The following code illustrates this:
var o = new Object(); o.toString(); // returns [object Object]
Note: Starting in JavaScript 1.8.5 toString()
called on null
returns [object Null]
, and undefined
returns [object Undefined]
, as defined in the 5th Edition of ECMAScript and a subsequent Errata. See Using_toString()_to_detect_object_class.
Examples
Overriding the default toString
method
You can create a function to be called in place of the default toString()
method. The toString()
method takes no arguments and should return a string. The toString()
method you create can be any value you want, but it will be most useful if it carries information about the object.
The following code defines the Dog
object type and creates theDog
, an object of type Dog
:
function Dog(name, breed, color, sex) { this.name = name; this.breed = breed; this.color = color; this.sex = sex; } theDog = new Dog('Gabby', 'Lab', 'chocolate', 'female');
If you call the toString()
method on this custom object, it returns the default value inherited from Object
:
theDog.toString(); // returns [object Object]
The following code creates and assigns dogToString()
to override the default toString()
method. This function generates a string containing the name, breed, color, and sex of the object, in the form "property = value;
".
Dog.prototype.toString = function dogToString() { var ret = 'Dog ' + this.name + ' is a ' + this.sex + ' ' + this.color + ' ' + this.breed; return ret; }
With the preceding code in place, any time theDog
is used in a string context, JavaScript automatically calls the dogToString()
function, which returns the following string:
"Dog Gabby is a female chocolate Lab"
Using toString()
to detect object class
toString()
can be used with every object and allows you to get its class. To use the Object.prototype.toString()
with every object, you need to call Function.prototype.call()
or Function.prototype.apply()
on it, passing the object you want to inspect as the first parameter called thisArg
.
var toString = Object.prototype.toString; toString.call(new Date); // [object Date] toString.call(new String); // [object String] toString.call(Math); // [object Math] // Since JavaScript 1.8.5 toString.call(undefined); // [object Undefined] toString.call(null); // [object Null]
Specifications
Specification | Status | Comment |
---|---|---|
ECMAScript 1st Edition (ECMA-262) | Standard | Initial definition. Implemented in JavaScript 1.0. |
ECMAScript 5.1 (ECMA-262) The definition of 'Object.prototype.toString' in that specification. |
Standard | Call on null returns [object Null] , and undefined returns [object Undefined] |
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Object.prototype.toString' in that specification. |
Standard | |
ECMAScript Latest Draft (ECMA-262) The definition of 'Object.prototype.toString' in that specification. |
Draft |
Browser compatibility
Desktop | Mobile | Server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Basic support | Chrome Full support Yes | Edge Full support Yes | Firefox Full support 1 | IE Full support Yes | Opera Full support Yes | Safari Full support Yes | WebView Android Full support Yes | Chrome Android Full support Yes | Edge Mobile Full support Yes | Firefox Android Full support 4 | Opera Android Full support Yes | Safari iOS Full support Yes | Samsung Internet Android Full support Yes | nodejs Full support Yes |
Legend
- Full support
- Full support