JS中的 toString 和 valueOf 方法

1.存在环境

所有的对象都继承了这两个方法,甚至于包装对象Number、String和Boolean。

2.具体细节

对于不同类型的对象,js定义了多个版本的 toString 和 valueOf 方法
toString:
(1)普通对象,返回 "[object Object]";
(2)数组,返回数组元素之间添加逗号合并成的字符串;
(3)函数,返回函数的定义式的字符串;
(4)日期对象,返回一个可读的日期和时间字符串;
(5)正则,返回其字面量表达式构成的字符串;
valueOf:
(1)日期对象,返回自1970年1月1日到现在的毫秒数;
(2)其它均返回对象本身;

3.应用场景——类型转换

对象=>字符串
(1)执行toString,如果返回了一个原始值,则将其转化为字符串
(2)否则执行valueOf方法,如果返回了一个原始值,则将其转化为字符串
(3)否则抛出类型错误
对象=>数字
(1)执行valueOf,如果返回了一个原始值,如果需要,则将其转化为数字
(2)否则执行toString,如果返回了一个原始值,则将其转化为数字并返回
(3)否则抛出类型错误

4.类型转换与关系操作符(>、<等,不包括===和!==)

- 两个都是数值,则比较数值
- 两个都是字符串,则比较字符编码值
- 其中一个是数值,则要把另个转化成数值进行比较
- 如果其中一个是对象,则调用valueOf,若没有返回原始值则调用toString,再进行前面的比较
- 如果有一个是布尔值,则将其转化成数值

注:日期对象只调用toString,不会调用valueOf方法

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值