基本上,所有JS數(shù)據(jù)類型都擁有valueOf和toString這兩個方法,null除外。它們倆解決javascript值運算與顯示的問題。
1.用法如下:
toString()方法:返回對象的字符串表示。
| 對象 | 操作 | 
|---|---|
| Array | 將 Array 的元素轉(zhuǎn)換為字符串。結(jié)果字符串由逗號分隔,且連接起來。 | 
| Boolean | 如果 Boolean 值是 true,則返回 “true”。否則,返回 “false”。 | 
| Date | 返回日期的文字表示法。 | 
| Error | 返回一個包含相關(guān)錯誤消息的字符串。 | 
| Function | 返回如下格式的字符串,其中 functionname 是被調(diào)用 toString 方法函數(shù)的名稱:             |     
| Number | 返回數(shù)字的文字表示。 | 
| String | 返回 String 對象的值。 | 
| 默認 | 返回 “[object objectname]”,其中 objectname 是對象類型的名稱。 |     
valueOf()方法:返回指定對象的原始值。
| 對象 | 返回值 | 
|---|---|
| Array | 數(shù)組的元素被轉(zhuǎn)換為字符串,這些字符串由逗號分隔,連接在一起。其操作與 Array.toString 和 Array.join方法相同。 | 
| Boolean | Boolean 值。 | 
| Date | 存儲的時間是從 1970 年 1 月 1 日午夜開始計的毫秒數(shù) UTC。 | 
| Function | 函數(shù)本身。 | 
| Number | 數(shù)字值。 | 
| Object | 對象本身。這是默認情況。 | 
| String | 字符串值。 | 
2.兩者的共同點與不同點:
共同點:在 JavaScript 中,toString()方法和valueOf()方法,在輸出對象時會自動調(diào)用。
不同點:二者并存的情況下,在數(shù)值運算中,優(yōu)先調(diào)用了valueOf,字符串運算中,優(yōu)先調(diào)用了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一定將所有內(nèi)容轉(zhuǎn)為字符串
2. valueOf取出對象內(nèi)部的值,不進行類型轉(zhuǎn)換
用途的差別:
1. valueOf專用于算數(shù)計算和關(guān)系運算
2. toString專用于輸出字符串
共同的缺點:無法獲取null和undefined的值
PS:Java中parse()和valueOf(),toString()的區(qū)別
1.parse()是SimpleDateFomat里面的方法,你說的應該是parseInt()或parsefloat()這種方法吧,
顧名思義 比如說parseInt()就是把String類型轉(zhuǎn)化為int類型。
如
String a= "123";
 int b = Integer.parseInt(a);
這樣b就等于123了。
2.ValueOf()方法比如說 Integer.valueOf() 是把String類型轉(zhuǎn)化為Integer類型(注意:是Integer類型,而不是int類型,int類型是表示數(shù)字的簡單類型,Integer類型是一個引用的復雜類型)
如:
String a= "123";Integer c =Integer.valueOf(a);//Integer類型可以用intValue方法轉(zhuǎn)化為int類型int b =c.intValue();
這時候這個b就等于123了
3. toString()可以把一個引用類型轉(zhuǎn)化為String字符串類型。
下面舉個例子與2相反,把Integer轉(zhuǎn)化為String類型:
Integer a = new Integer(123);
String b =a.toString();
這時候b就是 "123" 了
                       int
          parseInt()
String                      intValue()  
         ValueOf()            
                    Integer
新聞熱點
疑難解答