javascript中tostring()和valueof()的用法及两者的区别
基本上,所有JS数据类型都拥有valueOf和toString这两个方法,null除外。它们俩解决javascript值运算与显示的问题,本文给大家介绍javascript中tostring()和valueof()的用法及两者的区别,对js tostring valueof相关知识感兴趣的朋友一起学习吧 在JavaScript中,`toString()`和`valueOf()`是两种常见的对象方法,它们的作用在于将对象转换成更适合当前上下文的表示形式。尽管这两种方法在很多情况下都可以用来获取对象的字符串表示,但它们之间存在一些关键的区别。 `toString()`方法主要用于返回对象的字符串表示。对于不同的数据类型,`toString()`的行为也有所不同: 1. 对于Array,它会将数组的所有元素转换为字符串,并用逗号分隔。 2. Boolean类型会返回"true"或"false"。 3. Date对象会返回日期的文本格式。 4. Error对象会返回包含错误信息的字符串。 5. Function返回函数的源代码字符串。 6. Number返回数字的文本表示。 7. String对象直接返回其值。 8. 对于自定义对象,如果没有重写`toString()`,则默认返回"[object objectname]",其中objectname是对象的类型名称。 另一方面,`valueOf()`方法返回对象的原始值。这意味着: 1. 对于Array,它与`toString()`行为类似,返回一个由逗号分隔的字符串。 2. Boolean返回其原始的布尔值。 3. Date返回从1970年1月1日开始的UTC时间毫秒数。 4. Function返回函数本身。 5. Number返回数字值。 6. Object返回对象自身,这通常不适用于直接的字符串表示。 7. String返回字符串值。 两者之间的主要差异在于使用场景: 1. 在涉及数值运算时,JavaScript会优先调用`valueOf()`,因为它需要原始值进行计算。 2. 在进行字符串连接操作时,JavaScript会优先调用`toString()`,因为这里需要的是字符串表示。 例如,考虑以下两个示例: ```javascript var obj = {}; obj.valueOf = function() { return 10; } obj.toString = function() { return "return value"; } var result = obj + 1; // 调用valueOf(),因为是数值运算 console.log(result); // 输出 "11" console.log(obj); // 输出 "[object Object]",默认调用toString() ``` 和 ```javascript function obj() {} obj.prototype.toString = function(){ return 'dfsf'; }; obj.prototype.valueOf = function(){ return '3333'; }; var e = new obj(); var o = new obj(); console.log(o); // 输出 "[object Object]",默认调用toString() console.log(o+e); // 调用valueOf(),因为是数值运算,结果为 "33333333" ``` 值得注意的是,`toString()`和`valueOf()`都不能直接获取`null`和`undefined`的值。对于这两种特殊值,它们没有这些方法,因此尝试调用它们会引发错误。 另外,提到了Java中的`parse()`、`valueOf()`和`toString()`,虽然这不是JavaScript中的概念,但可以简单对比一下:在Java中,`parseInt()`或`parseFloat()`用于将字符串转换为整数或浮点数,而`valueOf()`则用于将字符串转换为对象实例(如`Integer.valueOf("123")`会产生一个`Integer`对象,而非基本类型的`int`)。`toString()`在Java中同样用于将对象转换为字符串,但与JavaScript中的`toString()`在具体实现上可能存在差异。































- 粉丝: 4
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 主要是在学习李航的统计学习方法和周志华的机器学习西瓜书的笔记和相关的代码实现
- 单片机技术试题集.doc
- 基于卷积神经网络的图像分类技术.docx
- JavaEE物联网云计算系列培训教材-Oracle数据库设计01.ppt
- 《计算机应用基础Windows-xp》综合练习.doc
- 清大学习吧项目管理手册汇编.doc
- 基于单片机的数字秒表系统研究设计.doc
- 数字图像处理期末考试答案.docx
- 中职服装专业课堂教学信息化探究.docx
- 创客教育在《计算机应用基础》课程教学中的应用.docx
- 大数据时代高校资产管理信息化建设研究.docx
- BIM+智慧工地的项目管理模式探究.docx
- 论网络虚拟财产的刑法保护.docx
- 计算机网络安全防范策略.docx
- 【高中信息技术课件】算法及其实现.ppt
- 国内外大数据下政策评估研究综述.docx


