浅谈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事件模型代码
Jul 01 Javascript
jQuery 使用手册(六)
Sep 23 Javascript
JavaScript 核心参考教程 内置对象
Oct 13 Javascript
基于jQuery实现的百度导航li拖放排列效果,即时更新数据库
Jul 31 Javascript
JavaScript中json使用自己总结
Aug 13 Javascript
Javascript Web Slider 焦点图示例源码
Oct 10 Javascript
ActiveX控件与Javascript之间的交互示例
Jun 04 Javascript
DOM基础教程之使用DOM控制表格
Jan 20 Javascript
Javascript中的对象和原型(二)
Aug 12 Javascript
ES6新特性之字符串的扩展实例分析
Apr 01 Javascript
vue webpack开发访问后台接口全局配置的方法
Sep 18 Javascript
Layui 数据表格批量删除和多条件搜索的实例
Sep 04 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应用程序来获取Web服务器的状态信息
2006/10/09 PHP
用PHP为SHOPEX增加日志功能代码
2010/07/02 PHP
使用PHPMailer实现邮件发送代码分享
2014/10/23 PHP
PHP 微信支付类 demo
2015/11/30 PHP
javascript 检测浏览器类型和版本的代码
2009/09/15 Javascript
JavaScript面向对象之静态与非静态类
2010/02/03 Javascript
Javascript中的相等与不等运算
2010/04/25 Javascript
Jquery Change与bind事件代码
2011/09/29 Javascript
深入理解JavaScript系列(1) 编写高质量JavaScript代码的基本要点
2012/01/15 Javascript
javascript中[]和{}对象使用介绍
2013/03/20 Javascript
Seajs的学习笔记
2014/03/04 Javascript
jquery右下角自动弹出可关闭的广告层
2015/05/08 Javascript
angularjs创建弹出框实现拖动效果
2020/08/25 Javascript
jQuery实现的网页换肤效果示例
2016/09/20 Javascript
jQuery实现复选框的全选和反选
2017/02/02 Javascript
BootStrap+Mybatis框架下实现表单提交数据重复验证
2017/03/23 Javascript
基于JavaScript实现前端数据多条件筛选功能
2020/08/19 Javascript
vue单页面打包文件大?首次加载慢?nginx带你飞,从7.5M到1.3M蜕变过程(推荐)
2018/01/16 Javascript
Mint-UI时间组件起始时间问题及时间插件使用
2018/08/20 Javascript
Vue 的双向绑定原理与用法揭秘
2020/05/06 Javascript
[03:52]DOTA2英雄基础教程 酒仙
2013/12/23 DOTA
[05:00]TI9战队采访 - Royal Never Give Up
2019/08/20 DOTA
python判断windows系统是32位还是64位的方法
2015/05/11 Python
python读取图片的方式,以及将图片以三维数组的形式输出方法
2019/07/03 Python
mac系统下Redis安装和使用步骤详解
2019/07/09 Python
Python日志:自定义输出字段 json格式输出方式
2020/04/27 Python
CSS实现的一闪而过的图片闪光效果
2014/04/23 HTML / CSS
英国香水店:The Perfume Shop
2017/03/27 全球购物
英国最大的LED专业零售商:Led Hut
2018/03/16 全球购物
语文教学随笔感言
2014/02/18 职场文书
个人总结与自我评价
2014/09/18 职场文书
植物园观后感
2015/06/11 职场文书
大学生实习证明
2015/06/16 职场文书
广播体操比赛主持词
2015/06/29 职场文书
JavaScript 反射学习技巧
2021/10/16 Javascript
Mysql外键约束的创建与删除的使用
2022/03/03 MySQL