浅谈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 相关文章推荐
为指定元素增加样式的js代码
Dec 09 Javascript
jQuery validate 中文API 附validate.js中文api手册
Jul 31 Javascript
javascript实现des解密加密全过程
Apr 03 Javascript
JQuery选中checkbox方法代码实例(全选、反选、全不选)
Apr 27 Javascript
js实现仿网易点击弹出提示同时背景变暗效果
Aug 13 Javascript
AngularJS表单验证中级篇(3)
Sep 28 Javascript
Vue.js组件使用开发实例教程
Nov 01 Javascript
JS生成一维码(条形码)功能示例
Jan 19 Javascript
$.browser.msie 为空或不是对象问题的多种解决方法
Mar 19 Javascript
搭建Vue从Vue-cli到router路由护卫的实现
Nov 14 Javascript
微信小程序加载机制及运行机制图解
Nov 27 Javascript
vue.js自定义组件实现v-model双向数据绑定的示例代码
Jan 08 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
一个MYSQL操作类
2006/11/16 PHP
PHP中的错误处理、异常处理机制分析
2012/05/07 PHP
Thinkphp搜索时首页分页和搜索页保持条件分页的方法
2014/12/05 PHP
Laravel使用memcached缓存对文章增删改查进行优化的方法
2016/10/08 PHP
PHP PDOStatement::closeCursor讲解
2019/01/30 PHP
JavaScript入门教程(12) js对象化编程
2009/01/31 Javascript
JavaScript this 深入理解
2009/07/30 Javascript
js下判断 iframe 是否加载完成的完美方法
2010/10/26 Javascript
JS字符串累加Array不一定比字符串累加快(根据电脑配置)
2012/05/14 Javascript
GRID拖拽行的实例代码
2013/07/18 Javascript
javascript如何判断输入的url是否正确
2014/04/11 Javascript
D3.js 从P元素的创建开始(显示可加载数据)
2014/10/30 Javascript
localResizeIMG先压缩后使用ajax无刷新上传(移动端)
2015/08/11 Javascript
关于JavaScript数组你所不知道的3件事
2016/08/24 Javascript
Vue2.x中的父子组件相互通信的实现方法
2017/05/02 Javascript
使用InstantClick.js让页面提前加载200ms
2017/09/12 Javascript
利用JavaScript的%做隔行换色的实例
2017/11/25 Javascript
Vue自定义指令封装节流函数的方法示例
2018/07/09 Javascript
vue安装遇到的5个报错及解决方法
2019/06/12 Javascript
vue.js实现三级菜单效果
2019/10/19 Javascript
[55:47]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第三局
2016/02/27 DOTA
[45:59]EG vs OG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python求斐波那契数列示例分享
2014/02/14 Python
深入分析python数据挖掘 Json结构分析
2018/04/21 Python
python 剪切移动文件的实现代码
2018/08/02 Python
Python 从相对路径下import的方法
2018/12/04 Python
详解如何用TensorFlow训练和识别/分类自定义图片
2019/08/05 Python
Autopep8的使用(python自动编排工具)
2021/03/02 Python
基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作
2016/01/11 HTML / CSS
奥地利婴儿用品和玩具购物网站:baby-markt.at
2020/01/26 全球购物
高中生校园生活自我评价
2013/09/19 职场文书
测绘工程专业个人自我评价
2013/12/01 职场文书
市场总经理岗位职责
2014/04/11 职场文书
学校学雷锋活动总结
2014/06/26 职场文书
九九重阳节标语
2014/10/07 职场文书
PyQt5 显示超清高分辨率图片的方法
2021/04/11 Python