浅谈String.valueOf()方法的使用


Posted in Javascript onJune 06, 2016

前面的话

关于类型转换,对象常见的两个方法是toString()和valueOf()。实际上,这两个方法也可以应用在包装类型上。前面已经介绍过toString()方法,本文将介绍valueOf()方法,该方法返回原值

【1】undefined和null没有valueOf()方法

undefined.valueOf();//错误
null.valueOf();//错误

【2】布尔型数据true和false返回原值

true.valueOf();//true
typeof true.valueOf();//'boolean'
false.valueOf();//false
typeof false.valueOf();//'boolean'
Boolean.valueOf();//Boolean() { [native code] }
typeof Boolean.valueOf();//'function'

【3】字符串类型原值返回

'1'.valueOf();//'1'
''.valueOf();//''
'abc'.valueOf();//'abc'
String.valueOf();//String() { [native code] }
typeof String.valueOf();//'function'

【4】数值类型分为整数和浮点数进行处理

Number.valueOf();//Number() { [native code] }
typeof Number.valueOf();//'function'

1、整数直接跟上.valueOf()形式,会报错,提示无效标记,所以尽量加括号

0.valueOf();//Uncaught SyntaxError: Invalid or unexpected token
(0).valueOf();//0
+0.valueOf();//Uncaught SyntaxError: Invalid or unexpected token
(+0).valueOf();//0
-0.valueOf();//Uncaught SyntaxError: Invalid or unexpected token
(-0).valueOf();//-0

[注意]-0的valueOf()值是-0,而-0的toString()值是'0'

2、浮点数原值返回

1.23.valueOf();//1.23
+1.23.valueOf();//1.23
-1.23.valueOf();//-1.23
NaN.valueOf();//NaN
Infinity.valueOf();//Infinity
-Infinity.valueOf();//-Infinity

[注意]和toString()不同的是,valueOf()不可以接收转换基数

【5】对象Object类型及自定义对象类型返回原对象

{}.valueOf();//报错,Unexpected token .
({}).valueOf();//Object{}
typeof ({}).valueOf();//'object'
({a:123}).valueOf();//Object{a:123}
Object.valueOf();//Object() { [native code] }
typeof Object.valueOf();//'function'
function Person(){
  this.name = 'test';
}
var person1 = new Person();
person1.valueOf();//Person {name: "test"}

【6】函数Function类型返回原函数

function test(){
  alert(1);//test
}
test.valueOf();/*function test(){
          alert(1);//test
         }*/
Function.valueOf();//Function() { [native code] }

【7】数组Array类型返回原数组

[].valueOf();//[]
[1].valueOf();//[1]
[1,2,3,4].valueOf();//[1,2,3,4]
Array.valueOf();//Array() { [native code] }

【8】和其他对象不同,时间Date类型返回一个数字值,它是this时间值

Date.now();//1465115123742
(new Date()).valueOf();//1465115123742
typeof (new Date()).valueOf();//'number'
Date.valueOf();//Date() { [native code] }

【9】正则表达式RegExp类型返回原正则对象

/ab/i.valueOf();///ab/i
/mom( and dad( and baby)?)?/gi.valueOf();//mom( and dad( and baby)?)?/gi
RegExp.valueOf();//RegExp() { [native code] }

【10】错误Error类型

Error.valueOf();//Error() { [native code] }
RangeError.valueOf();//RangeError() { [native code] }
ReferenceError.valueOf();//ReferenceError() { [native code] }
SyntaxError.valueOf();//SyntaxError() { [native code] }
TypeError.valueOf();//TypeError() { [native code] }
URIError.valueOf();//URIError() { [native code] }

总 结  

1、toString()和valueOf()的主要不同点在于,toString()返回的是字符串,而valueOf()返回的是原对象

2、由于undefined和null不是对象,所以它们toString()和valueOf()两个方法都没有

3、数值Number类型的toString()方法可以接收转换基数,返回不同进制的字符串形式的数值;而valueOf()方法无法接受转换基数

4、时间Date类型的toString()方法返回的表示时间的字符串表示;而valueOf()方法返回的是现在到1970年1月1日00:00:00的数值类型的毫秒数

以上这篇浅谈String.valueOf()方法的使用就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 学习笔记一些小技巧
Mar 28 Javascript
jquery+ajax实现跨域请求的方法
Jan 20 Javascript
js获取json元素数量的方法
Jan 27 Javascript
Bootstrap按钮功能之查询按钮和重置按钮
Oct 26 Javascript
如何实现星星评价(jquery.raty.js插件)
Dec 21 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的三大方法
Jan 22 Javascript
babel的使用及安装配置教程
Feb 22 Javascript
React key值的作用和使用详解
Aug 23 Javascript
vue-cli 3.x 配置Axios(proxyTable)跨域代理方法
Sep 19 Javascript
小程序中使用css var变量(使js可以动态设置css样式属性)
Mar 31 Javascript
Vue 解决父组件跳转子路由后当前导航active样式消失问题
Jul 21 Javascript
如何手写简易的 Vue Router
Oct 10 Javascript
深入理解JavaScript单体内置对象
Jun 06 #Javascript
基于JS实现省市联动效果代码分享
Jun 06 #Javascript
对象转换为原始值的实现方法
Jun 06 #Javascript
jquery ajax结合thinkphp的getjson实现跨域的方法
Jun 06 #Javascript
node-http-proxy修改响应结果实例代码
Jun 06 #Javascript
浅谈bootstrap源码分析之tab(选项卡)
Jun 06 #Javascript
浅谈bootstrap源码分析之scrollspy(滚动侦听)
Jun 06 #Javascript
You might like
主流PHP框架的优缺点对比分析
2014/12/25 PHP
PHP框架Laravel中实现supervisor执行异步进程的方法
2017/06/07 PHP
Mac系统下搭建Nginx+php-fpm实例讲解
2020/12/15 PHP
javascript hashtable实现代码
2009/10/13 Javascript
jquery队列函数用法实例
2014/12/16 Javascript
JQuery判断radio(单选框)是否选中和获取选中值方法总结
2015/04/15 Javascript
如何用jQuery实现ASP.NET GridView折叠伸展效果
2015/09/26 Javascript
Bootstrap响应式侧边栏改进版
2016/09/17 Javascript
js实现文字选中分享功能
2017/01/25 Javascript
jQuery分页插件jquery.pagination.js使用方法解析
2017/02/09 Javascript
基于JavaScript实现拖动滑块效果
2017/02/16 Javascript
vue-resource 拦截器使用详解
2017/02/21 Javascript
Vue.js实现一个SPA登录页面的过程【推荐】
2017/04/29 Javascript
配置nodejs环境的方法
2017/05/13 NodeJs
js通过canvas生成图片缩略图
2020/10/02 Javascript
一起来了解一下JavaScript的预编译(小结)
2021/03/01 Javascript
基于python的Tkinter实现一个简易计算器
2015/12/31 Python
Python获取某一天是星期几的方法示例
2017/01/17 Python
在Python中实现替换字符串中的子串的示例
2018/10/31 Python
Django项目使用CircleCI的方法示例
2019/07/14 Python
Python中如何将一个类方法变为多个方法
2019/12/30 Python
将数据集制作成VOC数据集格式的实例
2020/02/17 Python
python实现ssh及sftp功能(实例代码)
2020/03/16 Python
Python日志处理模块logging用法解析
2020/05/19 Python
matplotlib实现数据实时刷新的示例代码
2021/01/05 Python
html5 拖拽上传图片实例演示
2013/04/01 HTML / CSS
Mybag美国/加拿大:英国奢华包包和名牌手袋网站
2020/02/16 全球购物
上海雨人软件技术开发有限公司测试题
2015/07/14 面试题
顶撞老师检讨书
2014/02/07 职场文书
广告学专业毕业生自荐信
2014/05/28 职场文书
建筑工程造价专业自荐信
2014/07/08 职场文书
2014光棍节大学生联谊活动方案
2014/10/10 职场文书
2014年化妆品销售工作总结
2014/12/01 职场文书
离职感谢信怎么写
2015/01/22 职场文书
爱岗敬业事迹材料
2019/06/20 职场文书
golang interface判断为空nil的实现代码
2021/04/24 Golang