JavaScript中valueOf 、toString 、toLocalString的区别

Array、Boolean、Date、Number等对象都具有toString()、toLocaleString()、valueOf()三个方法,那这三个方法有什么区别???

  var obj1=[1,2,3,4,5];
  var obj2=[5,4,3,2,1];
  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());
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

结果为:

这里写图片描述

根据输出结果可以发现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());
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

结果为:

这里写图片描述

  • 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());
  • 1
  • 2
  • 3
  • 4

结果:

这里写图片描述 
  

  • valueOf:返回数组本身
  • toString():把数组转换为字符串,并返回结果,每一项以逗号分割。
  • toLocalString():把数组转换为本地数组,并返回结果

二、JS Boolean 
例子:

var boolean = new Boolean();
console.log(boolean.valueOf());
console.log(boolean.toString());
  • 1
  • 2
  • 3

结果:

这里写图片描述 
  

  • 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());
  • 1
  • 2
  • 3
  • 4

结果:

这里写图片描述

  • 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());
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

结果:

这里写图片描述

  • valueOf:返回 Math 对象的原始值。

五、JS Number 
例子:

var num = new Number(1337);
console.log(num.valueOf());
console.log(num.toString());
console.log(num.toLocaleString());
  • 1
  • 2
  • 3
  • 4

结果:

这里写图片描述

  • 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());
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

结果:

这里写图片描述

  • valueOf:返回某个字符串对象的原始值。
  • toString():返回字符串。

猜你喜欢

转载自blog.csdn.net/hello_world_csdn/article/details/79642574