JavaScript引用類型之Array數組的toString()和valueof()方法的區別


一、轉換方法

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 方法函數的名稱:
function functionname( ) { [native code] }
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的值


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM