浅谈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 相关文章推荐
最新优化收藏到网摘代码(digg,diigo)
Feb 07 Javascript
js中巧用cssText属性批量操作样式
Mar 13 Javascript
Clipboard.js 无需Flash的JavaScript复制粘贴库
Oct 02 Javascript
JavaScript实现的伸展收缩型菜单代码
Oct 14 Javascript
关于cookie的初识和运用(js和jq)
Apr 07 Javascript
JavaScript闭包和范围实例详解
Dec 19 Javascript
微信小程序 下拉菜单的实现
Apr 06 Javascript
基于jquery.page.js实现分页效果
Jan 01 jQuery
jQuery实现每隔一段时间自动更换样式的方法分析
May 03 jQuery
JavaScript实现正则去除a标签并保留内容的方法【测试可用】
Jul 18 Javascript
react的滑动图片验证码组件的示例代码
Feb 27 Javascript
vue移动端使用appClound拉起支付宝支付的实现方法
Nov 21 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 MemCached高级缓存配置图文教程
2010/08/05 PHP
PHP采集类snoopy详细介绍(snoopy使用教程)
2014/06/19 PHP
PHP GD库生成图像的几个函数总结
2014/11/19 PHP
php抛出异常与捕捉特定类型的异常详解
2016/10/26 PHP
JavaScript中判断变量是数组、函数或是对象类型的方法
2015/02/25 Javascript
js+css实现的圆角边框TAB选项卡滑动门代码分享(2款)
2015/08/26 Javascript
学习使用jquery iScroll.js移动端滚动条插件
2020/03/24 Javascript
移动端 一个简单易懂的弹出框
2016/07/06 Javascript
bootstrap Table插件使用demo
2017/08/07 Javascript
vue.js实现简单轮播图效果
2017/10/10 Javascript
Vue不能检测到Object/Array更新的情况的解决
2018/06/26 Javascript
React 无状态组件(Stateless Component) 与高阶组件
2018/08/14 Javascript
使用微信小程序开发弹出框应用实例详解
2018/10/18 Javascript
Vue 中 a标签上href无法跳转的解决方式
2019/11/12 Javascript
vue组件创建的三种方式小结
2020/02/03 Javascript
Python查询IP地址归属完整代码
2017/06/21 Python
python中abs&map&reduce简介
2018/02/20 Python
python实现数据导出到excel的示例--普通格式
2018/05/03 Python
Flask框架实现给视图函数增加装饰器操作示例
2018/07/16 Python
Python3 串口接收与发送16进制数据包的实例
2019/06/12 Python
pyqt5 lineEdit设置密码隐藏,删除lineEdit已输入的内容等属性方法
2019/06/24 Python
Django实现web端tailf日志文件功能及实例详解
2019/07/28 Python
Pytorch 使用opnecv读入图像由HWC转为BCHW格式方式
2020/06/02 Python
Python实现自动签到脚本功能
2020/08/20 Python
解决Python3.8运行tornado项目报NotImplementedError错误
2020/09/02 Python
德国高品质男装及配饰商城:Cultizm(Raw Denim原色牛仔裤)
2018/04/16 全球购物
彪马香港官方网上商店:PUMA香港
2020/12/06 全球购物
毕业求职自荐信格式是什么
2013/11/19 职场文书
团日活动总结范文
2014/04/25 职场文书
建筑施工安全责任书
2014/07/24 职场文书
判缓刑人员个人思想汇报
2014/10/10 职场文书
关于践行三严三实的心得体会
2016/01/05 职场文书
2016年学校“6﹒26国际禁毒日”宣传活动总结
2016/04/05 职场文书
创业计划书之溜冰场
2019/10/25 职场文书
MySQL数据库10秒内插入百万条数据的实现
2021/11/01 MySQL
win10更新失败无限重启解决方法
2022/04/19 数码科技