浅谈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 05 Javascript
JS delegate与live浅析
Dec 21 Javascript
JavaScript将页面表格导出为Excel的具体实现
Dec 27 Javascript
js实现鼠标悬浮给图片加边框的方法
Jan 30 Javascript
jQuery插件dataTables添加序号列的方法
Jul 06 Javascript
javascript鼠标跟随运动3种效果(眼球效果,苹果菜单,方向跟随)
Oct 27 Javascript
零基础轻松学JavaScript闭包
Dec 30 Javascript
微信小程序之绑定点击事件实例详解
Jul 07 Javascript
javascript计算渐变颜色的实例
Sep 22 Javascript
AngularJS中下拉框的高级用法示例
Oct 11 Javascript
p5.js入门教程和基本形状绘制
Mar 15 Javascript
vue动态注册组件实例代码详解
May 30 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将数据库中所有内容生成静态html文档的代码
2010/04/12 PHP
PHP基础教程(php入门基础教程)一些code代码
2013/01/06 PHP
PHP记录搜索引擎蜘蛛访问网站足迹的方法
2015/04/15 PHP
PHP递归删除多维数组中的某个值
2017/04/17 PHP
PHP四种排序算法实现及效率分析【冒泡排序,插入排序,选择排序和快速排序】
2018/04/27 PHP
十个迅速提升JQuery性能让你的JQuery跑得更快
2012/12/10 Javascript
让alert不出现弹窗的两种方法
2014/05/18 Javascript
jQuery实现鼠标滑过图片移动特效
2016/12/08 Javascript
jQuery如何跳转到另一个网页 就这么简单
2016/12/28 Javascript
Vue.js实战之利用vue-router实现跳转页面
2017/04/01 Javascript
vue与TypeScript集成配置最简教程(推荐)
2017/10/17 Javascript
Node.js调用fs.renameSync报错(Error: EXDEV, cross-device link not permitted)
2017/12/27 Javascript
微信小程序收藏功能的实现代码
2018/06/12 Javascript
微信小程序wx:for循环的实例详解
2018/10/07 Javascript
微信小程序五子棋游戏的悔棋实现方法【附demo源码下载】
2019/02/20 Javascript
JS原生瀑布流效果实现
2019/04/26 Javascript
Python实现购物车程序
2018/04/16 Python
解决PyCharm import torch包失败的问题
2018/10/13 Python
对Python中的条件判断、循环以及循环的终止方法详解
2019/02/08 Python
对Django项目中的ORM映射与模糊查询的使用详解
2019/07/18 Python
Python数组并集交集补集代码实例
2020/02/18 Python
CSS3动画效果回调处理详解
2014/12/10 HTML / CSS
Whistles官网:英国女装品牌
2020/08/14 全球购物
幼儿园家长会欢迎词
2014/01/09 职场文书
水果连锁超市创业计划书
2014/01/24 职场文书
法制宣传实施方案
2014/03/13 职场文书
青年文明号口号
2014/06/17 职场文书
2014年销售助理工作总结
2014/12/01 职场文书
2015年电教工作总结
2015/05/26 职场文书
合同审查法律意见书
2015/06/04 职场文书
2015迎新晚会活动总结
2015/07/16 职场文书
关于环保的宣传稿
2015/07/23 职场文书
幼儿园小班教学反思
2016/03/03 职场文书
2016年敬老月活动总结
2016/04/05 职场文书
导游词之五台山
2019/10/11 职场文书
Nginx Rewrite使用场景及配置方法解析
2021/04/01 Servers