浅谈String.valueOf()方法的使用

来源:互联网 发布:淘宝商家服务社区 编辑:程序博客网 时间:2024/06/05 13:21

关于类型转换,对象常见的两个方法是toString()和valueOf()。实际上,这两个方法也可以应用在包装类型上。前面已经介绍过toString()方法,本文将介绍valueOf()方法,该方法返回原值

【1】undefined和null没有valueOf()方法

?
1
2
undefined.valueOf();//错误
null.valueOf();//错误

【2】布尔型数据true和false返回原值

?
1
2
3
4
5
6
true.valueOf();//true
typeoftrue.valueOf();//'boolean'
false.valueOf();//false
typeoffalse.valueOf();//'boolean'
Boolean.valueOf();//Boolean() { [native code] }
typeofBoolean.valueOf();//'function'

【3】字符串类型原值返回

?
1
2
3
4
5
'1'.valueOf();//'1'
''.valueOf();//''
'abc'.valueOf();//'abc'
String.valueOf();//String() { [native code] }
typeofString.valueOf();//'function'

【4】数值类型分为整数和浮点数进行处理

?
1
2
Number.valueOf();//Number() { [native code] }
typeofNumber.valueOf();//'function'

1、整数直接跟上.valueOf()形式,会报错,提示无效标记,所以尽量加括号

?
1
2
3
4
5
6
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
2
3
4
5
6
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类型及自定义对象类型返回原对象

?
1
2
3
4
5
6
{}.valueOf();//报错,Unexpected token .
({}).valueOf();//Object{}
typeof({}).valueOf();//'object'
({a:123}).valueOf();//Object{a:123}
Object.valueOf();//Object() { [native code] }
typeofObject.valueOf();//'function'
?
1
2
3
4
5
functionPerson(){
  this.name = 'test';
}
varperson1 = newPerson();
person1.valueOf();//Person {name: "test"}

【6】函数Function类型返回原函数

?
1
2
3
4
5
6
7
functiontest(){
  alert(1);//test
}
test.valueOf();/*function test(){
          alert(1);//test
         }*/
Function.valueOf();//Function() { [native code] }

【7】数组Array类型返回原数组

?
1
2
3
4
[].valueOf();//[]
[1].valueOf();//[1]
[1,2,3,4].valueOf();//[1,2,3,4]
Array.valueOf();//Array() { [native code] }

【8】和其他对象不同,时间Date类型返回一个数字值,它是this时间值

?
1
2
3
4
Date.now();//1465115123742
(newDate()).valueOf();//1465115123742
typeof(newDate()).valueOf();//'number'
Date.valueOf();//Date() { [native code] }

【9】正则表达式RegExp类型返回原正则对象

?
1
2
3
/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类型

?
1
2
3
4
5
6
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的数值类型的毫秒数

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 你的呢 从你的 追随你的心 你吗的 睡在你的回忆里 你的笑你的美 让我听见你的声音 爱你依旧你的兰花指 在你的 看谁听你的 你的思念我的歌 我怀了你的孩子全集 我想听见你的声音 姐姐你的胸好大 你的恋爱我做主 你的猫 别让你的眼神出卖你 上你的绝世容颜 你的水好多 你的婚姻幸福吗 你的优缺点 你是我们的 你自己的 听见你的声音剧情 给你的悄悄话 找个爱你的还是你爱的 说出你的故事sjm 恋上你的绝世容颜 txt 按你的 我垂弃你的坟墓 你终究是爱我的 谈谈你的爱情观 能摸你的胸吗 难以捉摸你的心 爱你的歌词 孩子 你的天赋妈妈懂 满满喜欢 多少人曾爱慕你年轻时的容颜 这是你的 吻你说晚安 来及说我爱你