在类型转换中,经常用到方法valueOf()和他toString(),所有对象(包括基本包装类型)都拥有这两个方法。这篇文章我们先看看valueOf()方法。valueOf()方法会将对象转换为基本类型,如果无法转换为基本类型,则返回原对象。

【1】基本包装类型——Boolean型

   var obj = new Boolean(true);console.log(obj.valueOf());//trueconsole.log(typeof obj.valueOf());//boolean//如果是包装类型的基本类型,则返回原基本类型值var a = true;console.log(a.valueOf());//trueconsole.log(typeof a.valueOf());//boolean

如果是基本包装类型对应的基本类型,会返回原值。但这并不代表基本类型拥有valueOf()方法(基本类型不是对象,不拥有任何方法),而是在读取一个基本类型值时,后台会创建一个对应的基本包装类型的对象,从而调用一些方法。所以,基本类型“调用”valueOf()方法时,实际上是先创建了一个对应的基本包装类型,由此基本包装类型调用valueOf(),最后返回了其对应的基本类型,看起来就好像是基本类型调用了valueOf()方法而得到了原始值。

【2】基本包装类型——String型

   var obj = new String("hello");console.log(obj.valueOf());//helloconsole.log(typeof obj.valueOf());//string//如果是包装类型的基本类型,则返回原基本类型值var a = "hello";console.log(a.valueOf());//helloconsole.log(typeof a.valueOf());//string

同【1】,String基本包装类型和基本类型调用valueOf()方法都返回对应的基本类型

【3】基本包装类型——Number型

   var obj = new Number("123");console.log(obj.valueOf());//123console.log(typeof obj.valueOf());//number//如果是包装类型的基本类型,则返回原基本类型值var a = 123;console.log(a.valueOf());//123console.log(typeof a.valueOf());//number

同【1】,Number基本包装类型和基本类型调用valueOf()方法都返回对应的基本类型。

注意,如果直接用整数调用时,要加上括号,否则会报错。因为整数后面的点会识别为小数点。浮点型不会报错。

   console.log(123.valueOf());//Uncaught SyntaxErrorconsole.log((123).valueOf());//123console.log(12.3.valueOf());//12.3

【4】数组Array类型(返回原数组)

   var a = [1];console.log(a.valueOf());//[1]console.log(a === a.valueOf());//true

【5】函数Function类型(返回原函数)

   var a = function(){};console.log(a.valueOf());//function(){};console.log(a === a.valueOf());//true

   var a = /a/g;console.log(a.valueOf());///a/gconsole.log(a === a.valueOf());//true

【7】对象Object类型

   var obj = {a:1};console.log(obj.valueOf());//Object{a:1}console.log(obj === obj.valueOf());//true

【8】Date类型(返回表示当前时间的数值)

   var obj = new Date();console.log(obj);//Wed May 10 2017 12:19:05 GMT+0800 (中国标准时间)console.log(obj.valueOf());//1494389910179console.log(obj === obj.valueOf());//falseconsole.log(obj.getTime() === obj.valueOf());//true

小结

1)undefined和null没有此方法(基本类型肯定没有方法,String、Number和Boolean是因为有对应的基本包装类型,才可以调用方法);

2)基本包装类型和对应的基本类型,调用valueOf()返回对应的基本类型值;

3)对象类型(除Date类型)返回原对象;

4)Date类型返回表示日期的毫秒数

转载于:https://www.cnblogs.com/youhong/p/6835310.html

valueOf函数详解相关推荐

  1. JavaScript valueOf() 函数详解

    valueOf()函数用于返回指定对象的原始值. 该方法属于Object对象,由于所有的对象都"继承"了Object的对象实例,因此几乎所有的实例对象都可以使用该方法. 所有主流浏 ...

  2. java里的进制转换函数_基于Java中进制的转换函数详解

    十进制转成十六进制: Integer.toHexString(int i) 十进制转成八进制 Integer.toOctalString(int i) 十进制转成二进制 Integer.toBinar ...

  3. C语言网络编程:accept函数详解

    文章目录 前言 函数描述 代码实例 如何得到客户端的IP 和 端口号 前言 当使用tcp服务器使用socket创建通信文件描述符,bind绑定了文件描述符,服务器ip和端口号,listen将服务器端的 ...

  4. 【FFmpeg】函数详解(三)

    FFmpeg函数详解 14.av_write_frame 15.av_interleaved_write_frame 16.av_write_trailer 17.avio_close 18.av_i ...

  5. 【FFmpeg】函数详解(二)

    FFmpeg函数详解 9.av_dump_format 10.avio_open 11.avformat_write_header 12.avcodec_send_frame 13.avcodec_r ...

  6. 【FFmpeg】函数详解(一)

    FFmpeg函数详解 一.错误码相关 1.AVERROR 2.av_strerror 3.其他错误码解释 二.编解码 1.获取编解码器 2.申请.释放上下文环境 3.打开编码器avcodec_open ...

  7. 【ES6】Generator函数详解

    [ES6]Generator函数详解 一.Generator函数简介 基本概念 函数写法 yield关键字介绍 二.next方法的参数 三.for...of循环 四.关于普通throw()与Gener ...

  8. mysql的聚合函数综合案例_MySQL常用聚合函数详解

    一.AVG AVG(col) 返回指定列的平均值 二.COUNT COUNT(col) 返回指定列中非NULL值的个数 三.MIN/MAX MIN(col):返回指定列的最小值 MAX(col):返回 ...

  9. python平方数迭代器_对python中的高效迭代器函数详解

    python中内置的库中有个itertools,可以满足我们在编程中绝大多数需要迭代的场合,当然也可以自己造轮子,但是有现成的好用的轮子不妨也学习一下,看哪个用的顺手~ 首先还是要先import一下: ...

最新文章

  1. 重点:怎样正确的使用QThread类(注:包括推荐使用QThread线程的新方法QObject::moveToThread)...
  2. MapReduce英语面试
  3. jsp页面,在浏览器端显示时会出现乱码解决方法
  4. 尚硅谷_JavaScript_学习笔记
  5. [Golang] 第三方包应该如何安装--在线和离线
  6. 一个类加载的谜团解决了
  7. Python稳基修炼之计算机等级考试易错概念题2(含答案与解析)
  8. C++_类和对象_对象特性_拷贝构造函数调用时机---C++语言工作笔记042
  9. Tkinter 的 Text 组件
  10. Win10:重新安装window store
  11. [zz] 海洋环境的光能传递
  12. 深度学习实战 第7章循环神经网络笔记
  13. 超声波传感器测距原理与模块使用
  14. 计算机网络公网ip,怎么查看电脑的公网IP地址
  15. linux卸载带输入法,Ubuntu删除自带的输入法之后设置不见了
  16. 浅谈千万级高性能高并发网站架构
  17. 什么原因可能会造成Android手机卡顿?
  18. 趣头条递交招股书 将冲刺移动内容聚合第一股
  19. windows10家庭版修改中文用户名完美解决
  20. php linux OpenOffice+JODConverter+php实现将word/ppt/excel文档转换为pdf

热门文章

  1. 在LoadRunner中处理dotNET的VIEWSTATE(摘自关河)
  2. NI LabVIEW 2015视觉开发必备软件和工具包
  3. Ubuntu16.04的安装教程
  4. pta mysql 训练题集 ( 61-80 )
  5. mysql strlen 函数_sizeof和strlen函数区别
  6. SPSS Modeler 决策树C5.0算法实践案例(指南 第十三章)
  7. 基于STM32采用CS创世 SD NAND(贴片SD卡)完成FATFS文件系统移植与测试(中篇)
  8. Python快速编程入门#学习笔记01# |第一章 :Python基础知识 (Python发展历程、常见的开发工具、import模块导入)
  9. 计算机辅助诊断(Computer-aided diagnosis)小总结
  10. Java Web打印控件(纯java手写版)