JS中toString()和valueOf()的用法及两者的区别

基本上,所有JS数据类型都拥有valueOf和toString这两个方法,null除外。它们俩解决javascript值运算与显示的问题。

1.用法如下:

toString()方法:返回对象的字符串表示。

 

对象操作
Array将 Array 的元素转换为字符串。结果字符串由逗号分隔,且连接起来。
Boolean如果 Boolean 值是 true,则返回 “true”。否则,返回 “false”。
Date返回日期的文字表示法。
Error返回一个包含相关错误消息的字符串。
Function返回如下格式的字符串,其中 functionname 是被调用 toString 方法函数的名称:
function functionname( ) { [native code] }
Number返回数字的文字表示。
String返回 String 对象的值。
默认返回 “[object objectname]”,其中 objectname 是对象类型的名称。

 

valueOf()方法:返回指定对象的原始值。

 

对象返回值
Array数组的元素被转换为字符串,这些字符串由逗号分隔,连接在一起。其操作与 Array.toString 和 Array.join方法相同。
BooleanBoolean 值。
Date存储的时间是从 1970 年 1 月 1 日午夜开始计的毫秒数 UTC
Function函数本身。
Number数字值。
Object对象本身。这是默认情况。
String字符串值。

 

2.两者的共同点与不同点:

共同点:在 JavaScript 中,toString()方法和valueOf()方法,在输出对象时会自动调用。

不同点:二者并存的情况下,在数值运算中,优先调用了valueOf,字符串运算中,优先调用了toString。

例子1如下:

<script>
 var obj = {};
 obj.valueOf = function()
 {
 return 10;
 }
 obj.toString = function()
 {
 return "return value";
 }
 var result = obj + 1; //var result = obj.valueOf() + 1;
 alert(result);
 alert(obj); //alert(obj.toString());
</script>

例子2如下:

function obj()
 { }
 obj.prototype.toString = function(){  return 'dfsf';

 };
 obj.prototype.valueOf = function(){
  return '3333';
 };
 var e = new obj();
 var o = new obj();
 alert(o);//alert(obj.toString())
 alert(o+e);//alert(obj.valueOf()+obj.valueOf())
</script>


返回值类型的差别:  ****toString vs valueOf的差别:

              1. toString一定将所有内容转为字符串

              2. valueOf返回指定对象的原始值,不进行类型转换

用途的差别:

              1. valueOf专用于算数计算和关系运算

              2. toString专用于输出字符串

共同的缺点:无法获取null和undefined的值

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值