一、轉換方法
1、在JavaScript中幾乎所有對象都具有toLocaleString()、toString和valueof()方法,因為,所有的對象都繼承自Object,而前面所說的方法都是Object的方法!
所以數組也有toString()方法,其中調用數組的toString()方法會返回由數組中每個值的字符串形式拼接而成的一個以逗號分割的字符串。代碼如下:
var colors=["red","blue","green"]; alert(colors.toString()); //輸出:red,blue,green alert(colors.valueOf()); //輸出:red,blue,green alert(colors); //輸出:red,blue,green
第一行alert()顯示的調用了toString()方法,以便返回數組的字符串變現形式,每個值的字符串表示拼接成了一個字符串,中間用逗號分隔!
第二行alert()調用了valueof()方法,返回的還是數組的字符串形式
第三行alert()要接收字符串參數,而第三行傳給alert是一個數組,所以,alert會在后台調用toString()方法,在輸出數組的字符串類型
2、toString()方法:返回對象的字符串表示。
操作 | |
---|---|
Array | 將 Array 的元素轉換為字符串。結果字符串由逗號分隔,且連接起來。 |
Boolean | 如果 Boolean 值是 true,則返回 “true”。否則,返回 “false”。 |
Date | 返回日期的文字表示法。 |
Error | 返回一個包含相關錯誤消息的字符串。 |
Function | 返回如下格式的字符串,其中 functionname 是被調用 toString 方法函數的名稱: |
Number | 返回數字的文字表示。 |
String | 返回 String 對象的值。 |
默認 | 返回 “[object objectname] ”,其中 objectname 是對象類型的名稱。 |
3、valueOf()方法:返回指定對象的原始值。
返回值 | |
---|---|
Array | 數組的元素被轉換為字符串,這些字符串由逗號分隔,連接在一起。其操作與 Array.toString 和 Array.join方法相同。 |
Boolean | Boolean 值。 |
Date | 存儲的時間是從 1970 年 1 月 1 日午夜開始計的毫秒數 UTC。 |
Function | 函數本身。 |
Number | 數字值。 |
Object | 對象本身。這是默認情況。 |
String | 字符串值。 |
4、兩者的不同點
共同點:在 JavaScript 中,toString()方法和valueOf()方法,在輸出對象時會自動調用。
不同點:
(1)、二者並存的情況下,在數值運算中,優先調用了valueOf,字符串運算中,優先調用了toString。
代碼如下:
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());
(2)返回值類型的差別:
toString一定將所有內容轉為字符串
valueOf取出對象內部的值,不進行類型轉換
(3)用途的差別:
valueOf專用於算數計算和關系運算
toString專用於輸出字符串
(3)共同的缺點
無法獲取null和undefined的值