toString()与toLocaleString()

拭目以待 发布于

       Object下存在两个转换字符串方法,一个是常用的toString(),另外一个是基于本地化的toLocaleString()方法。除了原始Object,其它类型也继承了这两个方法,但对其进行了重构。接下来通过示例展现各种不同类型下的输出与彼此间的差异(已将存在差异的类型以红色标识)。
       需要注意的是:基本类型虽然不是对象,但是却可以调用toString()与toLocaleString(),这是由于在调用时,会首先将基本类型实例化为对应的对象类型。比如 var t = 'abc';  示例中t并不是对象类型,但是在调用toString()时,会首先通过new String()将文本实例化为String类型。

对象:

toString()与 toLocaleString()相同,调用的是原始Object.toString()方法
var o = {
    x:1,
    y:2
};
console.log(o.toString());  //'[object Object]'
console.log(o.toLocaleString());//'[object Object]'

字符串:

toString()与toLocaleString()效果相同,因为本身就是字符串,所以都是什么也没干。通过var s ='abc';
var s = 'abc';
console.log(s.toString());   //'abc'
console.log(s.toLocaleString()); //'abc'

数字:

toString()将数字转换为字符串,toLocaleString()在转换为字符串的同时,使用三位分节法进行显示。
与其它类型不同,number类型下这两个方法都是可配置参数的。
var n = 182209508;
console.log(n.toString());   //'182209508'
console.log(n.toString(8)); //'1267045744' 传入需要转换的进制,支持2-36之间的整数
console.log(n.toLocaleString()); //'182,209,508'
console.log(n.toLocaleString('zh-Hans-CN-u-nu-hanidec')); //一八二,二〇九,五〇八 点击查看参数详情介绍

浮点数:

toString()将浮点数转换为字符串, toLocaleString()在转换为字符串的同时,只保留了小数点后三位数,并进行了四舍五入
var f = 3.1415926;
console.log(f.toString());   //'3.1415926'
console.log(f.toLocaleString()); //'3.142'

布尔:

toString()与toLocaleString()效果相同 。都是将boolean值直接转换为了字符串
var b = true;
console.log(b.toString());  //'true'
console.log(b.toLocaleString());//'true'

日期:

toString() 转换为以国际化日期显示格式的字符串,toLocaleString() 转换为以本地日期显示格式的字符串。
var d = new Date();
console.log(d.toString());      //'Wed Jun 15 2016 09:54:49 GMT+0800 (中国标准时间)'
console.log(d.toLocaleString());//'2016/6/15 上午9:54:49'

数组:

toString()与 toLocaleString()相同, 将数组转换为以,号间隔的字符串,效果与join(',')相同
var a = [1,2,3,'a','b','c'];
console.log(a.toString());  //'1,2,3,a,b,c'
console.log(a.toLocaleString());//'1,2,3,a,b,c'

函数:

toString()与 toLocaleString()相同,将方法直接转换成字符串
var fn = function(){
    this.a =1;
    this.f = function(){
    }
}
console.log(fn.toString());  //'function (){this.a =1;this.f = function(){}}'
console.log(fn.toLocaleString());//'function (){this.a =1;this.f = function(){}}'

null:

null可以理解为一个特殊的对象,即然也是一个对象,也算是一种类型,那么不防也试一下。
var _null = null;
console.log(typeof(_null)); //object
//console.log(_null.toString());  //Uncaught TypeError: Cannot read property 'toString' of null
//console.log(_null.toLocaleString()); //Uncaught TypeError: Cannot read property 'toLocaleString' of null