As a general rule, the valueOf() method for an object simply returns the this property of the object itself. However, the object may be a wrapper for a host object some kind. It may therefore have been created by invoking the Object constructor. In that case, the host object should be returned in an ECMA-compliant implementation.
Implementations may choose to return the this property of an object or some other value if they choose.
The result of this method will be implementation- and object-dependant. The native core objects are well defined and will return predictable value types. Generally these will be defined by ECMA or W3C standards. It is up to the hosting environment to provide the valueOf() interface to its own suite of objects.
ECMA 262 edition 2 - section - 18.104.22.168
ECMA 262 edition 2 - section - 22.214.171.124
ECMA 262 edition 3 - section - 126.96.36.199