Summary
The valueOf()
method returns the primitive value of the specified object.
Syntax
object.valueOf()
Description
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.
By default, the valueOf
method is inherited by every object descended from Object
. Every built-in core object overrides this method to return an appropriate value. If an object has no primitive value, valueOf
returns the object itself, which is displayed as:
[object Object]
You can use valueOf
within your own code to convert a built-in object into a primitive value. When you create a custom object, you can override Object.prototype.valueOf()
to call a custom method instead of the default Object
method.
Overriding valueOf
for custom objects
You can create a function to be called in place of the default valueOf
method. Your function must take no arguments.
Suppose you have an object type myNumberType
and you want to create a valueOf
method for it. The following code assigns a user-defined function to the object's valueOf
method:
myNumberType.prototype.valueOf = function () { return customPrimitiveValue; };
With the preceding code in place, any time an object of type myNumberType
is used in a context where it is to be represented as a primitive value, JavaScript automatically calls the function defined in the preceding code.
An object's valueOf
method is usually invoked by JavaScript, but you can invoke it yourself as follows:
myNumber.valueOf()
Note: Objects in string contexts convert via the toString()
method, which is different from String
objects converting to string primitives using valueOf
. All objects have a string conversion, if only "[object type ]
". But many objects do not convert to number, boolean, or function.
Examples
Example: Using valueOf
o = new Object(); myVar = o.valueOf(); // [object Object]
Specifications
Specification | Status | Comment |
---|---|---|
ECMAScript 1st Edition. Implemented in JavaScript 1.1 | Standard | Initial definition. |
ECMAScript Language Specification 5.1th Edition (ECMA-262) | Standard | |
ECMAScript Language Specification 6th Edition (ECMA-262) | Draft |
Browser compatibility
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |