浅谈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 CSS 修改学习第四章 透明度设置
Feb 19 Javascript
JSON.parse 解析字符串出错的解决方法
Jul 08 Javascript
JS 模态对话框和非模态对话框操作技巧汇总
Apr 15 Javascript
Javascript中的方法和匿名方法实例详解
Jun 13 Javascript
jQuery实现动画效果circle实例
Aug 06 Javascript
JavaScript+html5 canvas绘制的小人效果
Jan 27 Javascript
js实现简单的碰壁反弹效果
Aug 30 Javascript
js判断请求的url是否可访问,支持跨域判断的实现方法
Sep 17 Javascript
Vuex 入门教程
Jan 10 Javascript
解决ant-design-vue中menu菜单无法默认展开的问题
Oct 31 Javascript
vue 中的动态传参和query传参操作
Nov 09 Javascript
js中Object.create实例用法详解
Oct 05 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代码串截取代码
2008/12/29 PHP
两个强悍的php 图像处理类1
2009/06/15 PHP
PHP中的string类型使用说明
2010/07/27 PHP
php debug 安装技巧
2011/04/30 PHP
PHP中return 和 exit 、break和contiue 区别与用法
2012/04/09 PHP
Linux下创建nginx脚本-start、stop、reload…
2014/08/03 PHP
php专用数组排序类ArraySortUtil用法实例
2015/04/03 PHP
js获取鼠标点击的位置实现思路及代码
2014/05/09 Javascript
Window.Open打开窗体和if嵌套代码
2016/04/15 Javascript
Java遍历集合方法分析(实现原理、算法性能、适用场合)
2016/04/25 Javascript
jQuery给div,Span, a ,button, radio 赋值与取值
2016/06/24 Javascript
微信小程序 wxapp内容组件 text详细介绍
2016/10/31 Javascript
javascript-解决mongoose数据查询的异步操作
2016/12/22 Javascript
layui的table中显示图片方法
2018/08/17 Javascript
axios全局注册,设置token,以及全局设置url请求网段的方法
2018/09/25 Javascript
vue把输入框的内容添加到页面的实例讲解
2019/11/11 Javascript
node.js使用zlib模块进行数据压缩和解压操作示例
2020/02/12 Javascript
javascript设计模式 ? 享元模式原理与用法实例分析
2020/04/15 Javascript
js实现鼠标切换图片(无定时器)
2021/01/27 Javascript
Python中getpass模块无回显输入源码解析
2018/01/11 Python
Python中elasticsearch插入和更新数据的实现方法
2018/04/01 Python
python 将列表中的字符串连接成一个长路径的方法
2018/10/23 Python
python实现翻转棋游戏(othello)
2019/07/29 Python
Python 多线程其他属性以及继承Thread类详解
2019/08/28 Python
tensorflow dataset.shuffle、dataset.batch、dataset.repeat顺序区别详解
2020/06/03 Python
Python做图像处理及视频音频文件分离和合成功能
2020/11/24 Python
CSS3 animation实现逐帧动画效果
2016/06/02 HTML / CSS
CSS3 新增选择器的实例
2019/11/13 HTML / CSS
香蕉共和国Banana Republic官网:美国GAP旗下偏贵族风格服饰品牌
2016/11/21 全球购物
天猫国际进口超市直营:官方直采,一站购齐
2017/12/11 全球购物
澳大利亚女士时装在线:Rockmans
2018/09/26 全球购物
国贸专业个人求职信分享
2013/12/04 职场文书
学习标兵获奖感言
2014/02/20 职场文书
部门年终奖分配方案
2014/05/07 职场文书
python 逐步回归算法
2021/04/06 Python
Nginx静态压缩和代码压缩提高访问速度详解
2022/05/30 Servers