在类型转换中,经常用到方法valueOf()和他toString(),所有对象(包括基本包装类型)都拥有这两个方法。这篇文章我们先看看valueOf()方法。valueOf()方法会将对象转换为基本类型,如果无法转换为基本类型,则返回原对象。
【1】基本包装类型——Boolean型
var obj = new Boolean(true); console.log(obj.valueOf());//true console.log(typeof obj.valueOf());//boolean //如果是包装类型的基本类型,则返回原基本类型值 var a = true; console.log(a.valueOf());//true console.log(typeof a.valueOf());//boolean如果是基本包装类型对应的基本类型,会返回原值。但这并不代表基本类型拥有valueOf()方法(基本类型不是对象,不拥有任何方法),而是在读取一个基本类型值时,后台会创建一个对应的基本包装类型的对象,从而调用一些方法。所以,基本类型“调用”valueOf()方法时,实际上是先创建了一个对应的基本包装类型,由此基本包装类型调用valueOf(),最后返回了其对应的基本类型,看起来就好像是基本类型调用了valueOf()方法而得到了原始值。
【2】基本包装类型——String型
var obj = new String("hello"); console.log(obj.valueOf());//hello console.log(typeof obj.valueOf());//string //如果是包装类型的基本类型,则返回原基本类型值 var a = "hello"; console.log(a.valueOf());//hello console.log(typeof a.valueOf());//string同【1】,String基本包装类型和基本类型调用valueOf()方法都返回对应的基本类型
【3】基本包装类型——Number型
var obj = new Number("123"); console.log(obj.valueOf());//123 console.log(typeof obj.valueOf());//number //如果是包装类型的基本类型,则返回原基本类型值 var a = 123; console.log(a.valueOf());//123 console.log(typeof a.valueOf());//number同【1】,Number基本包装类型和基本类型调用valueOf()方法都返回对应的基本类型。
注意,如果直接用整数调用时,要加上括号,否则会报错。因为整数后面的点会识别为小数点。浮点型不会报错。
console.log(123.valueOf());//Uncaught SyntaxError console.log((123).valueOf());//123 console.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【6】正则RegExp类型(返回原正则对象)
var a = /a/g; console.log(a.valueOf());///a/g console.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());//1494389910179 console.log(obj === obj.valueOf());//false console.log(obj.getTime() === obj.valueOf());//true小结:
1)undefined和null没有此方法(基本类型肯定没有方法,String、Number和Boolean是因为有对应的基本包装类型,才可以调用方法);
2)基本包装类型和对应的基本类型,调用valueOf()返回对应的基本类型值;
3)对象类型(除Date类型)返回原对象;
4)Date类型返回表示日期的毫秒数
valueOf函数详解
时间: 2024-10-02 00:24:23
valueOf函数详解的相关文章
JavaScript valueOf() 函数详解
valueOf()函数用于返回指定对象的原始值. 该方法属于Object对象,由于所有的对象都"继承"了Object的对象实例,因此几乎所有的实例对象都可以使用该方法. 所有主流浏览器均支持该函数. 语法 object.valueOf( ) 返回值 valueOf()函数返回指定对象的原始值. JavaScript的许多内置对象都重写了该函数,以实现更适合自身的功能需要.因此,不同类型对象的valueOf()方法的返回值和返回值类型均可能不同. 对象 返回值 Array 数组实例对象.
php socket函数详解
转自:http://blog.163.com/[email protected]/blog/static/2889641420138213514298/ 最近在用socket实现服务端向客户端主动推送消息函数名 描述socket_accept() 接受一个Socket连接socket_bind() 把socket绑定在一个IP地址和端口上socket_clear_error() 清除socket的错误或最后的错误代码socket_close() 关闭一个socket资源socket_connec
delphi中的Format函数详解
首先看它的声明:[[email protected]][@21ki!] function Format(const Format: string; const Args: array of const): string; overload;[[email protected]][@21ki!] 事实上Format方法有两种形式,另外一种是三个参数的,主要区别在于它是线程安全的,[[email protected]][@21ki!]但并不多用,所以这里只对第一个介绍:[[email protect
c++ 虚函数详解
下面是对C++的虚函数的理解. 一,定义 简单地说,那些被virtual关键字修饰的成员函数,就是虚函数.虚函数的作用,用专业术语来解释就是实现多态性(Polymorphism),多态性是将接口与实现进行分离:用形象的语言来解释就是实现以共同的方法,但因个体差异而采用不同的策略.下面来看一段简单的代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 classA { publi
linux网络编程之shutdown() 与 close()函数详解
linux网络编程之shutdown() 与 close()函数详解 参考TCPIP网络编程和UNP: shutdown函数不能关闭套接字,只能关闭输入和输出流,然后发送EOF,假设套接字为A,那么这个函数会关闭所有和A相关的套接字,包括复制的:而close能直接关闭套接字. 1.close()函数 [cpp] view plain copy print? <span style="font-size:13px;">#include<unistd.h> int
linux中fork()函数详解[zz]
转载自:http://www.cnblogs.com/york-hust/archive/2012/11/23/2784534.html 一.fork入门知识 一个进程,包括代码.数据和分配给进程的资源.fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事. 一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间.然后把原来的进程的所有值都复制到新的新进程中,只有
Python内置函数详解
置顶 内置函数详解 https://docs.python.org/3/library/functions.html?highlight=built#ascii 此文参考了别人整理好的东西(地址:http://www.cnblogs.com/sesshoumaru/p/6140987.html#p1),然后结合自己的理解,写下来,一方面方便自己,让自己好好学习,顺便回忆回忆:另一方面,让喜欢的盆友也参考一下. 经查询,3.6版本总共有68个内置函数,主要分类如下: 数学运算(7个) 类型转换
【转载】3D/2D中的D3DXMatrixPerspectiveFovLH和D3DXMatrixOrthoLH投影函数详解
原文:3D/2D中的D3DXMatrixPerspectiveFovLH和D3DXMatrixOrthoLH投影函数详解 3D中z值会影响屏幕坐标系到世界坐标系之间的转换,2D中Z值不会产生影响(而只是屏幕宽高比会产生影响,z值只对深度剔除产生影响).所以U3D中如果用2D摄像机那么屏幕坐标和世界坐标之间的转换需要用指定的2D摄像机才行,如果用主3D摄像机那么UI转换会产生计算结果异常. 一.D3DXMatrixPerspectiveFovLH函数 作用:Builds a left-handed
CreateFile函数详解
CreateFile函数详解 CreateFile The CreateFile function creates or opens the following objects and returns a handle that can be used to accessthe object: files pipes mailslots communications resources disk devices(Windows NT only) consoles directories(open