javascript中tostring()和valueof()的用法及两者的区别

  作者:bea

基本上,所有JS数据类型都拥有valueOf和toString这两个方法,null除外。它们俩解决javascript值运算与显示的问题。 1.用法如下: toString()方法:返回对象的字符串表示。 对象 操作 Array 将Array的元素转换为字符串。结果字符串由逗号分隔,且连接起来。 Boolean 如果 Boolean 值是true,则返回 “true”。否则,返回 “false”。
基本上,所有JS数据类型都拥有valueOf和toString这两个方法,null除外。它们俩解决javascript值运算与显示的问题。
1.用法如下:
toString()方法:返回对象的字符串表示。




对象
操作


Array
将 Array 的元素转换为字符串。结果字符串由逗号分隔,且连接起来。


Boolean
如果 Boolean 值是 true,则返回 “true”。否则,返回 “false”。


Date
返回日期的文字表示法。


Error
返回一个包含相关错误消息的字符串。


Function
返回如下格式的字符串,其中 functionname 是被调用 toString 方法函数的名称: function functionname( ) { [native code] }


Number
返回数字的文字表示。


String
返回 String 对象的值。


默认
返回 “[object objectname]”,其中 objectname 是对象类型的名称。




valueOf()方法:返回指定对象的原始值。




对象
返回值


Array
数组的元素被转换为字符串,这些字符串由逗号分隔,连接在一起。其操作与 Array.toString 和 Array.join方法相同。


Boolean
Boolean 值。


Date
存储的时间是从 1970 年 1 月 1 日午夜开始计的毫秒数 UTC。


Function
函数本身。


Number
数字值。


Object
对象本身。这是默认情况。


String
字符串值。




2.两者的共同点与不同点:
共同点:在 JavaScript 中,toString()方法和valueOf()方法,在输出对象时会自动调用。
不同点:二者并存的情况下,在数值运算中,优先调用了valueOf,字符串运算中,优先调用了toString。
例子1如下:


<script>
var obj = {};
obj.valueOf = function()
{
return 10;
}
obj.toString = function()
{
return "return value";
}

var result = obj + 1; //var result = obj.valueOf() + 1;
alert(result);
alert(obj); //alert(obj.toString());
</script>

例子2如下:


function obj()
{ }
obj.prototype.toString = function(){
return 'dfsf';
};
obj.prototype.valueOf = function(){
return '3333';
};
var e = new obj();
var o = new obj();
alert(o);//alert(obj.toString())
alert(o+e);//alert(obj.valueOf()+obj.valueOf())
</script>

  ****toString vs valueOf的差别:
返回值类型的差别:
              1. toString一定将所有内容转为字符串
              2. valueOf取出对象内部的值,不进行类型转换
用途的差别:
              1. valueOf专用于算数计算和关系运算
              2. toString专用于输出字符串
共同的缺点:无法获取null和undefined的值
PS:Java中parse()和valueOf(),toString()的区别
1.parse()是SimpleDateFomat里面的方法,你说的应该是parseInt()或parsefloat()这种方法吧,
顾名思义 比如说parseInt()就是把String类型转化为int类型。

String a= "123";
 int b = Integer.parseInt(a);
这样b就等于123了。
2.ValueOf()方法比如说 Integer.valueOf() 是把String类型转化为Integer类型(注意:是Integer类型,而不是int类型,int类型是表示数字的简单类型,Integer类型是一个引用的复杂类型) 如:


String a= "123";
Integer c =Integer.valueOf(a);
//Integer类型可以用intValue方法转化为int类型
int b =c.intValue();

这时候这个b就等于123了
3. toString()可以把一个引用类型转化为String字符串类型。
下面举个例子与2相反,把Integer转化为String类型:
Integer a = new Integer(123); String b =a.toString();
这时候b就是 "123" 了
                       int           parseInt() String                      intValue()           ValueOf()                                Integer


有用  |  无用

猜你喜欢