浅谈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 相关文章推荐
基于jquery的tab切换 js原理
Apr 01 Javascript
火狐4、谷歌12不支持Jquery Validator的解决方法分享
Jun 20 Javascript
JavaScript link方法入门实例(给字符串加上超链接)
Oct 17 Javascript
JavaScript encodeURI 和encodeURIComponent
Dec 04 Javascript
JavaScript通过代码调用Flash显示的方法
Feb 02 Javascript
Bootstrap零基础入门教程(二)
Jul 18 Javascript
jQuery EasyUI编辑DataGrid用combobox实现多级联动
Aug 29 Javascript
ES6新特性七:数组的扩充详解
Apr 21 Javascript
Vuex的基本概念、项目搭建以及入坑点
Nov 04 Javascript
vue-router传参用法详解
Jan 19 Javascript
如何给element添加一个抽屉组件的方法步骤
Jul 14 Javascript
详解Vue后台管理系统开发日常总结(组件PageHeader)
Nov 01 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
PHP6 先修班 JSON实例代码
2008/08/23 PHP
使用PHP Socket 编程模拟Http post和get请求
2014/11/25 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
php写入txt乱码的解决方法
2019/09/17 PHP
javascript获取鼠标点击元素对象(示例代码)
2013/12/20 Javascript
JS+CSS相对定位实现的下拉菜单
2015/10/06 Javascript
clipboard.js无需Flash无需依赖任何JS库实现文本复制与剪切
2015/10/10 Javascript
又一款js时钟!transform实现时钟效果
2016/08/15 Javascript
Vue监听数据对象变化源码
2017/03/09 Javascript
微信小程序 在线支付功能的实现
2017/03/14 Javascript
Angular 2 利用Router事件和Title实现动态页面标题的方法
2017/08/23 Javascript
详解node服务器中打开html文件的两种方法
2017/09/18 Javascript
微信小程序实现列表下拉刷新上拉加载
2020/07/29 Javascript
Vue实现购物车的全选、单选、显示商品价格代码实例
2019/05/06 Javascript
js实现轮播图特效
2020/05/28 Javascript
Python strip lstrip rstrip使用方法
2008/09/06 Python
Python urlopen()函数 示例分享
2014/06/12 Python
python实现淘宝秒杀聚划算抢购自动提醒源码
2020/06/23 Python
python opencv 直方图反向投影的方法
2018/02/24 Python
python 通过字符串调用对象属性或方法的实例讲解
2018/04/21 Python
PyCharm鼠标右键不显示Run unittest的解决方法
2018/11/30 Python
django开发post接口简单案例,获取参数值的方法
2018/12/11 Python
Python 多线程,threading模块,创建子线程的两种方式示例
2019/09/29 Python
python logging添加filter教程
2019/12/24 Python
TensorFlow Saver:保存和读取模型参数.ckpt实例
2020/02/10 Python
Python通过2种方法输出带颜色字体
2020/03/02 Python
解决tensorflow/keras时出现数组维度不匹配问题
2020/06/29 Python
协程Python 中实现多任务耗资源最小的方式
2020/10/19 Python
处理textarea中的换行和空格
2019/12/12 HTML / CSS
中餐厅经理岗位职责
2014/04/11 职场文书
要账委托书范本
2014/09/15 职场文书
婚内分居协议书范文
2014/11/26 职场文书
大学生毕业评语
2014/12/31 职场文书
如何写辞职信
2015/05/13 职场文书
2015年度招聘工作总结
2015/05/28 职场文书
拉贝日记观后感
2015/06/05 职场文书