浅谈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 相关文章推荐
xml文档转换工具,附图表例子(hta)
Nov 17 Javascript
javascript函数以及基础写法100多条实用整理
Jan 13 Javascript
Extjs4中的分页应用结合前后台
Dec 13 Javascript
JS实现鼠标单击与双击事件共存
Mar 08 Javascript
Jquery仿IGoogle实现可拖动窗口示例代码
Aug 22 Javascript
AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值
Jan 25 Javascript
BootStrap的table表头固定tbody滚动的实例代码
Aug 24 Javascript
利用iscroll4实现轮播图效果实例代码
Jan 11 Javascript
js 将input框中的输入自动转化成半角大写(税号输入框)
Feb 16 Javascript
关于vue.js v-bind 的一些理解和思考
Jun 06 Javascript
浅析vue中的provide / inject 有什么用处
Nov 10 Javascript
vue本地构建热更新卡顿的问题“75 advanced module optimization”完美解决方案
Aug 05 Vue.js
深入理解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
smarty实例教程
2006/11/19 PHP
php网站来路获取代码(针对搜索引擎)
2010/06/08 PHP
PHP三元运算符的结合性介绍
2012/01/10 PHP
使用PHPExcel操作Excel用法实例分析
2015/03/26 PHP
PHP中PDO的事务处理分析
2016/04/07 PHP
Linux php 中文乱码的快速解决方法
2016/05/13 PHP
javascript 对象的定义方法
2007/01/10 Javascript
一些常用弹出窗口/拖放/异步文件上传等实用代码
2013/01/06 Javascript
JS Loading功能的简单实现
2013/11/29 Javascript
JS中如何设置readOnly的值
2013/12/25 Javascript
在jQuery中使用$而避免跟其它库产生冲突的方法
2015/08/13 Javascript
基于javascript实现样式清新图片轮播特效
2016/03/30 Javascript
简单实现js上传文件功能
2017/08/21 Javascript
vue使用$emit时,父组件无法监听到子组件的事件实例
2018/02/26 Javascript
vue中的模态对话框组件实现过程
2018/05/01 Javascript
angularjs $http调用接口的方式详解
2018/08/13 Javascript
解决cordova+vue 项目打包成APK应用遇到的问题
2019/05/10 Javascript
vue组件传值的实现方式小结【三种方式】
2020/02/05 Javascript
vue 监听 Treeselect 选择项的改变操作
2020/08/31 Javascript
Python 中urls.py:URL dispatcher(路由配置文件)详解
2017/03/24 Python
django实现登录时候输入密码错误5次锁定用户十分钟
2017/11/05 Python
简单实现python聊天程序
2018/04/01 Python
Python随机函数random()使用方法小结
2018/04/29 Python
Python 数据可视化pyecharts的使用详解
2019/06/26 Python
PyTorch的Optimizer训练工具的实现
2019/08/18 Python
python正则表达式的懒惰匹配和贪婪匹配说明
2020/07/13 Python
浅析python 通⽤爬⾍和聚焦爬⾍
2020/09/28 Python
Deux par Deux官方网站:设计师童装
2020/01/03 全球购物
俄罗斯马克西多姆家居用品网上商店:Максидом
2020/02/06 全球购物
护理个人求职信范文
2014/01/08 职场文书
人资专员岗位职责
2014/04/04 职场文书
服务标语大全
2014/06/18 职场文书
师范生见习报告
2014/10/31 职场文书
2019年学校消防安全责任书(2篇)
2019/10/09 职场文书
如何在CSS中绘制曲线图形及展示动画
2021/05/24 HTML / CSS
Mysql分库分表之后主键处理的几种方法
2022/02/15 MySQL