博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Javascript_备忘录2
阅读量:6332 次
发布时间:2019-06-22

本文共 1552 字,大约阅读时间需要 5 分钟。

     今天备忘的是Object to Primitive Conversions,类类型到元类型的转换。主要备忘的是类类型到字符型和类类型到数值型(简称类字转换和类数转换)的转换,类类型到布尔型的转换以一个例子直接带过:

new Boolean(false);

上面的这一行代码生成了一个糖衣类如果要转换为布尔类型其转换结果是true。(类转换到布尔都是true)

     类字转换和类数转换主要是通过toString()和valueOf()这两个函数,在Javascript中任何类都继承了这两个函数。默认的toString()方法不会输出有趣的值:

({x:1, y:2}).toString() // => "[object Object]"

所以许多类定义了自己特别的toString()方法:

[1,2,3].toString() // => "1,2,3"(function(x) { f(x); }).toString() // => "function(x) {\n f(x);\n}"/\d+/g.toString() // => "/\\d+/g"new Date(2010,0,1).toString() // => "Fri Jan 01 2010 00:00:00 GMT-0800 (PST)"

valueOf()函数就没toString()方法那么便利,因为它想把类类型转换到一种已定义的元类型,但是通常类类型是复合类型的即包含了很多元类型,所以valueOf()通常返回的是这个类本身。但是也有例外:

var d = new Date(2010, 0, 1); // January 1st, 2010, (Pacific time)d.valueOf() // => 1262332800000 -->毫秒

在Javascript中类字转换的步骤是:

  1. 检查toString()的存在,如果存在就调用,再如果返回的是元类型则Javascript将这元类型值转换为string。
  2. 如果不存在,则调用的是valueOf(),如果存在这函数并且调用后有元类型的值返回,则Javascript将这元类型值转为string。
  3. 如果都没元类型的值返回,则会抛出TypeError。

在Javascript中类数转换的步骤是:

  1. 先检查valueOf()方法的存在,如果存在并且调用后有元类型的值返回,则Javascript将这元类型值转换为数值型。
  2. 如果valueOf()方法不存在,则判定toString()方法是否存在,如果存在并且调用后返回元类型的值,则再转为数值型。
  3. 如果无元类型值返回则抛出TypeError。

以上的两个步骤我觉得比较多用于操作符的隐式转换,而且Date类在类数转换上比较特别,他是先弄toString()之后再valueOf():

var now = new Date(); // Create a Date objecttypeof (now + 1) // => "string": + converts dates to stringstypeof (now - 1) // => "number": - uses object-to-number conversionnow == now.toString() // => true: implicit and explicit string conversionsnow > (now -1) // => true: > converts a Date to a number

 

 

转载于:https://www.cnblogs.com/Key-Ky/archive/2013/01/02/2841998.html

你可能感兴趣的文章
redis 安装
查看>>
SQL some any all
查看>>
电子书下载:Programming Windows Identity Foundation
查看>>
有理想的程序员必须知道的15件事
查看>>
用于测试的字符串
查看>>
财付通和支付宝资料收集
查看>>
PHPCMS V9数据库表结构分析
查看>>
理解 IEnumerable 与 IEnumerator
查看>>
NHibernate 2.0 Beta 1 Released和一些工具
查看>>
【每天一个Linux命令】12. Linux中which命令的用法
查看>>
软件接口数据一致性机制
查看>>
微服务架构介绍和RPC框架对比
查看>>
Debian下使用OpenLDAP 管理端
查看>>
泛型排序器TComparer
查看>>
9个offer,12家公司,35场面试,从微软到谷歌,应届计算机毕业生的2012求职之路...
查看>>
创建符合标准的、有语意的HTML页面——ASP.NET 2.0 CSS Friendly Control Adapters 1.0发布...
查看>>
Adobe驳斥Flash过度耗电论 称HTML5更耗电
查看>>
No!No!No! It's not fashion!
查看>>
艰困之道中学到的经验教训
查看>>
互联网生态建设落地五大挑战——保险科技生态建设 ...
查看>>