Object.valueOf( ) |
指定对象的原始值 |
可用性
JavaScript 1.1; JScript 2.0; ECMAScript v1
语法
object.valueOf( )
返回值
与对象object相关的原始值(如果存在)。如果没有值与object相关,则返回对象自身。
描述
对象的valueOf()方法返回的是与那个对象相关的原始值(如果这样的值存在)。对于类型为Object的对象来说,由于它们没有原始值,因此该方法返回的是这些对象自身。
对于类型为Number的对象,valueOf()返回该对象表示的原始数值。同样,对于Boolean对象来说,该方法返回与对象相关的布尔值。对于String对象来说,返回与
对象相关的字符串。
其实,几乎没有必要自己调用valueOf()方法。在期望使用原始值的地方,JavaScript会自动地执行转换。事实上,由于方法valueOf()是被自动调用的,因此要分辨究
竟是原始值还是与之相应的对象非常困难。虽然使用typeof运算符可以显示字符串和String对象之间的区别,但在实际应用中,它们在JavaScript代码中的作用是一样的。
Number对象、Boolean对象和String对象的valueOf()方法可以将这些包装对象转
换成它们表示的原始值。在调用构造函数Obioct()时,如果把数字、布尔值或字符
串作为参数传递给它,它将执行相反的操作,即将原始值打包成相应的对象。几乎在所有的环境中,JavaScript都可以自动地实现原始值和对象之间的转换,所以一般说
来没有必要用这种方法调用构造函数Object()。
在某些环境中,你可以为自己的对象定制一个valueOf()方法。例如,你可以定义
一个JavaScript对象来表示复数(即一个实数加一个虚数)。作为这个对象的一部分,
要给它定义执行复数的加法、乘法等其他运算的方法。不过,还有一种功能是你想要的,即像处理常规实数一样处理复数,舍弃它的虚数部分。可以使用下面的代码实现
这一点:
Complex.prototype.valueOf = new Function("return this.real");
有了这个为Complex对象定义的valueOf()方法,就可以把复数对象传递给方法
Math.sqrt(),它将计算复数的实数部分的平方根。
参阅
Object.toString( )
|