为了账号安全,请及时绑定邮箱和手机立即绑定

toString 和valueOf的问题

toString 和valueOf的问题

尚方宝剑之说 2019-02-12 17:19:45
很久以前我在犀牛书中看到了关于对象的toString和valueOf的解释,如果,对象是日期对象则先调用toString,如果没有返回原始数据(null,undefined之类的),就会继续调用valueOf,如果还没有则报错。对于非日期对象(如数组)之类的,则是先valueOf,在toString,我自己也写了一些代码做过测试,确实没有问题。今天,我自己写代码的时候,就发现了一个有出入的地方。        function A() {}        A.prototype.toString = function() {            return 123;        }        A.prototype.valueOf = function() {            return 321;        }        var tempObj = new A();        console.log(A)按道理来说,我这里的A肯定不会是Date类型的,应该是先调用valueOf返回321,但是结果却是123(即先调用了toString)。是我记错了,还是说,valueOf和toString的调用是根据场景来的,而不是简单的先后顺序?
查看完整描述

2 回答

?
九州编程

TA贡献1785条经验 获得超4个赞

valueOf在数值计算时,优先调用
而toString在字符串的处理时优先。

查看完整回答
反对 回复 2019-02-25
  • 2 回答
  • 0 关注
  • 488 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信