天天看點

JavaScript中valueOf 、toString 、toLocalString的差別

 Array、Boolean、Date、Number等對象都具有toString()、toLocaleString()、valueOf()三個方法,那這三個方法有什麼差別???

var obj1=[,,,,];
  var obj2=[,,,,];
  var obj3=[obj1,obj2];

  console.log(obj1);
  console.log(obj2);
  console.log(obj3);

  console.log(typeof obj3.valueOf());
  console.log(typeof obj3.toString());
  console.log(typeof obj3.toLocaleString());
           

結果為:

JavaScript中valueOf 、toString 、toLocalString的差別

根據輸出結果可以發現toString()和toLocaleString()方法輸出的内容是一樣的,且都為字元串形式.而valueOf輸出的是這個對象本身的值.

那麼,toString、toLocalString方法有什麼差別呢?

看下面例子:

var date = new Date();
console.log(date.valueOf());
console.log(date.toString());
console.log(date.toLocaleString());

console.log(typeof  date.valueOf());
console.log(typeof  date.toString());
console.log(typeof date.toLocaleString());
           

結果為:

JavaScript中valueOf 、toString 、toLocalString的差別
  • toString()方法擷取的是String(傳統字元串),而toLocaleString()方法擷取的是LocaleString(本地環境字元串)。
  • 如果你開發的腳本在世界範圍都有人使用,那麼将對象轉換成字元串時請使用toString()方法來完成。
  • LocaleString()會根據你機器的本地環境來傳回字元串,它和toString()傳回的值在不同的本地環境下使用的符号會有微妙的變化。

是以使用toString()是保險的,傳回唯一值的方法,它不會因為本地環境的改變而發生變化。如果是為了傳回時間類型的資料,推薦使用LocaleString()。若是在背景處理字元串,請務必使用toString()。

 既然Array、Boolean、Date、Number等對象都具有toString()、toLocaleString()、valueOf()三個方法,那這三個方法針對不同對象有什麼差別???

一、JS Array

例子:

var array = new Array("niu","li","na");
console.log(array.valueOf());
console.log(array.toString());
console.log(array.toLocaleString());
           

結果:

JavaScript中valueOf 、toString 、toLocalString的差別

  

  • valueOf:傳回數組本身
  • toString():把數組轉換為字元串,并傳回結果,每一項以逗号分割。
  • toLocalString():把數組轉換為本地數組,并傳回結果

二、JS Boolean

例子:

var boolean = new Boolean();
console.log(boolean.valueOf());
console.log(boolean.toString());
           

結果:

JavaScript中valueOf 、toString 、toLocalString的差別

  

  • valueOf:傳回 Boolean 對象的原始值。
  • toString():根據原始布爾值或者 booleanObject 對象的值傳回字元串 “true” 或”false”。預設為”false”。
  • toLocalString():Boolean對象沒有toLocalString()方法。但是在Boolean對象上使用這個方法也不會報錯。

三、JS Date

例子:

var date = new Date();
console.log(date.valueOf());
console.log(date.toString());
console.log(date.toLocaleString());
           

結果:

JavaScript中valueOf 、toString 、toLocalString的差別
  • valueOf:傳回 Date 對象的原始值,以毫秒表示。
  • toString():把 Date 對象轉換為字元串,并傳回結果。使用本地時間表示。
  • toLocalString():可根據本地時間把 Date 對象轉換為字元串,并傳回結果,傳回的字元串根據本地規則格式化。

四、JS Math

例子:

console.log(Math.PI.valueOf());
console.log(Math.PI.toString());
console.log(Math.PI.toLocaleString());

console.log(typeof Math.PI.valueOf());
console.log(typeof Math.PI.toString());
console.log(typeof Math.PI.toLocaleString());
           

結果:

JavaScript中valueOf 、toString 、toLocalString的差別
  • valueOf:傳回 Math 對象的原始值。

五、JS Number

例子:

var num = new Number();
console.log(num.valueOf());
console.log(num.toString());
console.log(num.toLocaleString());
           

結果:

JavaScript中valueOf 、toString 、toLocalString的差別
  • valueOf:傳回一個 Number 對象的基本數字值。
  • toString():把數字轉換為字元串,使用指定的基數。
  • toLocalString():把數字轉換為字元串,使用本地數字格式順序。

六、JS String

例子: 

var string = new String("abc");
console.log(string.valueOf());
console.log(string.toString());
console.log(string.toLocaleString());

console.log(typeof string.valueOf());
console.log(typeof string.toString());
console.log(typeof string.toLocaleString());
           

結果:

JavaScript中valueOf 、toString 、toLocalString的差別
  • valueOf:傳回某個字元串對象的原始值。
  • toString():傳回字元串。

繼續閱讀