区分javascript中的toString(),toLocaleString(),valueOf()方法
首先我们随意创建一个对象,这很简单,打开FF浏览器的Firebug切换到控制台或者打开webkit浏览器的审查元素功能.
输入以下内容:
var obj1=[1,2,3,4,5]
var obj2=[5,4,3,2,1]
var obj3=[obj1,obj2]
接着试试调用obj3的toString(),toLocaleString(),valueOf()方法:
根据输出结果可以发现toString()和toLocaleString()方法输出的内容是一样的,且都为字符串形式.而valueOf输出的是这个对象本身的值.
仔细想想,开发javascript的人绝对不会无聊到去创造两个一样的方法吧.
我们稍微修改一下obj1和obj2,再来一次:
发现了什么?toLocaleString()与toString所访问的内容不太相同:toLocaleString访问的是obj3中每个元素的toLocaleString()方法,toString访问的是obj3中每个元素的toString()方法.
那么为什么toString()和toLocaleSting()是分开的?很简单,从方法命名上可以知道,toString()方法获取的是String(传统字符串),而toLocaleString()方法获取的是LocaleString(本地环境字符串).
如果你开发的脚本在世界范围都有人使用,那么将对象转换成字符串时请使用toString()方法来完成.
因为LocaleString()会根据你机器的本地环境来返回字符串,它和toString()返回的值在不同的本地环境下使用的符号会有微妙的变化.
所以使用toString()是保险的,返回唯一值的方法,它不会因为本地环境的改变而发生变化.
如果是为了返回时间类型的数据,推荐使用LocaleString().若是在后台处理字符串,请务必使用toString().