2013-04-22 86 views

回答

3

toString將值轉換爲字符串,valueOf將其轉換爲數字。究竟哪一個被調用取決於你所問的上下文。

如果javascript期望一個字符串或試圖將對象強制爲一個字符串,它將使用toString。如果它期待一個數字,它將使用valueOf。

這條規則的例外是,當一個值同時具有toString和valueOf時,它總是調用valueOf。

var x = { 
    toString: function(){ 
     return "x"; 
    }, 

    valueOf: function(){ 
     return 2; 
    } 

} 


alert("String :"+x); //2 

alert("Number :"+(0+x)); //2 

小提琴:http://jsfiddle.net/DsGKf/

所以要小心對你想有充當字符串的東西定義的valueOf。

+0

可以舉一個例子 – 2013-04-22 16:29:35

+0

string + 2應該會導致一個錯誤 – 2013-04-22 16:33:22

+0

將被轉換爲字符串 – 2013-04-22 16:37:20