对象到布尔值的转换非常简单:所有对象(包括数组和函数)都转化为true。

字符串和数字的转换规则只适用于本地对象(native object)。
宿主对象(例如,由web浏览器定义的对象)根据各自的算法转换为数字和字符串。


所有的对象继承了两个转换方法。
第一个是toString()他的作用反应对象的字符串。例子如下:

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

很多类定义了toString()方法列如
数组类(Array class)方法是将每个数组的元素转换为一个字符串,在元素间添加逗号再合成
函数类(Function class)将用户定义的函数转换为Javascirpt源代码字符串
日期类(Date class) 返回一个可读的日期时间类
RegExp类(RegExp class)RegExp对象转换为表示正则表达式直接量的字符串。

代码如下:

[1,2,3].toString()               // =>"1,2,3"
(function(x){f(x);}).toString()  // =>"funcction(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()对象是复合值,而且大多数无法正常表示一个原始值,因此默认简单的返回对象那本身。例子如下:

var d = new Date(2000, 0, 1);     //2010年1月1日
d.valueOf()                      //=> 12630........

通过刚刚使用的toString() valueOf()就可以做到对象到字符串的对象到数字的转换了。

javascirpt中对象到字符串的转换经过以下步骤:

  • 对象具有toString()方法,则调用这个方法。如果返回一个原始值,javascirpt将在这个值转换为字符串。
  • 对象没有toString()方法,或者这个方法并不返回一个原始值,那么javascirp会调用valueOf()方法
  • 否则javascirpt无法从toString() valueOf()获取原始值,因此这是他会抛出一个类型错误异常。

对象到数字的过程,首先使用valueOf()

  • 对象具有valueOf()方法,返回一个原始值,将这个原始值转换为数字并返回这个数字。
  • 否则,javascirpt抛出一个类型错误异常

下面代码展示了日期对象和 “+” “-” “== ” 以及 “>” 的运行结果

var now = new Date();   //创建一个日期对象
typeof(now + 1)         //=>"string";“+"将日期转换为字符串
typeof(now - 1)         //=>"number": "-"使用对象到数字的转换
now == now.toString()   //=>true: 隐式的和显示字符串的转换
now > (now -1)          //=>true: ">"将日期转换为数字

犀牛书3.8.3对象转化为原始值相关推荐

  1. 犀牛书读书笔记-01

    第一章,概述 这章是综述性质的,作者随意的给出了一些例子. 1. visibility = hidden, display = none. function hide (e, reflow) {if ...

  2. js犀牛书,学习心得笔记(一)

    最近每天都抽出时间看犀牛书,明显可以感觉到和以前看的时候有差别,阅读能力和心得有了很大的提升,以前不明白的一些知识点,还有一些隐藏在细节中的知识,现在都可以领悟到了. 1.包装对象 暂时性的包装对象 ...

  3. javascript犀牛书_犀牛书作者:最该忘记的JavaScript特性

    作者: 李松峰 转发链接:https://mp.weixin.qq.com/s/guAN1Cz2gYfKdBhmUpLyVA 前言 JavaScript这门语言的第一个演示版差不多就在25年前诞生. ...

  4. JavaScrpit 犀牛书第七版笔记

    JavaScrpit 犀牛书第七版笔记 挖个坑吧,JavaScript 犀牛书英文的第七版(JavaScript: The Definitive Guide, 7th Edition)其实在去年(20 ...

  5. Javascript学习笔记(犀牛书1、2章)

    引子:本来一直在做尚品汇的Vue3项目的,在前期基础的积淀下做项目其实已经没什么难点了,但是最近出差网络很差,没法弄,为了把出差的空余时间利用起来,正好把基础再练习一下,之前我学python的时候是把 ...

  6. 牛年到! “犀牛书”最新版还远嘛?

    "犀牛书"凭着完整的内容.细致的讲解以及海量针对性的示例而受到全球读者的一致好评,经过几代前端人的口口相传,成为名副其实的JavaScript权威指南!至今它仍保持着生命力,影响着 ...

  7. 犀牛书第2章 JavaScript词法结构

    程序设计语言的词法结构是一套基本规则,用来详细说明如何使用这种语言来编写程序.它是一种语言的最低层次的语法,指定了变量名是什么样的,注释应该使用什么字符以及语句之间如何分隔等规则. 1. 字符集: J ...

  8. 犀牛书作者:最该忘记的JavaScript特性

    编者按:本文译者李松峰,资深技术图书译者,翻译出版过40余部技术及交互设计专著,现任360奇舞团Web前端开发资深专家,360前端技术委员会委员.W3C AC代表. 原文:https://davidf ...

  9. 《JavaScript 权威指南》犀牛书阅读详解

    前言: <JavaScript 权威指南>(JavaScript:The Definitive Guide)是一本由David Flanagan所著的JavaScript领域的经典书籍,它 ...

最新文章

  1. 字符间距加宽5磅怎么设置_11层以下住宅小区——消防车道设置及答疑
  2. MySQL中的blob和clob
  3. Java虚拟机学习集锦是我攒来的,带你碾压面试官!
  4. Android开发之AudioManager(音频管理器)详解
  5. vsCode实现美化代码
  6. AdminLTE登录页设置背景图片
  7. ruby on rails 分页gem kaminari,指定页码跳转
  8. Adaptive Graph Convolutional Neural Networks
  9. Method threw ‘feign.codec.DecodeException‘ exception.
  10. 网站漏洞检测之常见安全问题
  11. vue组件读取static文件夹内json文件的图片路径问题
  12. Vue中使用SVG-ICON
  13. Linux命令----压缩解压缩
  14. 消息队列常见的几种使用场景介绍!
  15. with root cause 解决办法
  16. android视频动态壁纸app,视频动态壁纸app下载-视频动态壁纸app安卓版下载V1.0安卓版 - 非凡软件站...
  17. 常见电路、元器件汇总
  18. android面试手册
  19. 100多个神奇网站,学习娱乐大全,总有一款适合你。。。
  20. thingsboard | thingsboard edge 删除设备 云端同步删除 thingsboard edge删除设备后 云端不删除设备

热门文章

  1. mysql 5.5.48源码安装_centos5.5+apache2.2.15+mysql5.1.48+php5.2.13 编译安装 --by 画符抓鬼撰聊斋.doc...
  2. 保姆级——Java调用百度OCR实现身份证识别
  3. 今天太阳了一条狗!大悲咒走起
  4. CSS中的子绝父相布局
  5. 三维可视化的优势是什么?三维园区可视化,三维可视化展示
  6. python3中urllib库_Python--urllib3库详解
  7. 【微服务】 网关启动报错 Consider defining a bean of type org.springframework.http.codec.ServerCodecConfigurer
  8. IPFS微信指数日环比上升64.38%,OKEx徐坤:危险与机遇并存
  9. Python菜鸟起飞day11_ 线程、进程、协程(一、多线程)
  10. 【参赛作品88】【我和 openGauss 的故事】之 21 天学习总结