资讯专栏INFORMATION COLUMN

你不知道的JavaScript(二)

macg0406 / 1515人阅读

摘要:第三章原生函数有很多原生函数,为基本的数据类型值提供了封装对象,,,等。我们可以通过来查看所有返回的对象的内置属性这个属性无法直接访问。这个符号能有奇妙的功能,可以视为。通常用来把转换为数字,用来将转换为字符串,用来将取整。

第三章 原生函数
JS有很多原生函数,为基本的数据类型值提供了封装对象,String,Number,Boolean等。我们可以通过{}.call.toString()来查看所有typeof返回object的对象的内置属性[[class]],这个属性无法直接访问。我们基本类型调用的方法和属性都是通过封装对象去访问的,例如var a = “abc”; a.length//3,但是有一点需要注意的是new Boolean(false)//true,为false封装对象时,它是一个真值(即总是返回true),平时在用到封装对象中的基本类型值的时候,JS会发生隐式拆封。

第四章 强制类型转换

强制类型转换是JS里难以掌握的,但是在实际应用中它又是很有用处的,我们十分有必要去深入理解和合理运用它。类型转换有显式和隐式之分,后者就是强制类型转换,例如var a = 42; var b = a + “”;//“42”,这里数字a被转换为了字符串b。

非字符串转换为字符串,在没有自行定义的情况下,普通对象调用toString方法返回内部的[[Class]]值,JSON.Stringfy函数在将对象序列化为字符串时,如果定义了toJSON方法就会首先调用该方法,用返回值进行序列化,在数组中如果遇到undefined,空function,那么会在对应位置返回null以保证单元位置不变。
在将非数字值转换为数字时就会进行ToNumber操作,false转换为0,true转换为1,undefined转换为NaN,null转换为0,对于对象来说,会首先调用valueOf,没有就调用toString来返回基本类型,然后再强制转换为数字值,如果均不返回数字,则会报错。

转换为布尔值时,从逻辑上说,出现在假值列表上的才为假值,+0,-0,infinite,null,undefined,””,NaN等,要特别注意的是这些假值封装的对象是真值(所有对象都是真值),除了””以外的字符串也都是真值。
~这个符号能有奇妙的功能,~X可以视为-(X+1)。通常用+X来把X转换为数字,用X+””来将X转换为字符串,用X|0来将X取整。

对于+运算符,先是调用toString进行字符串拼接,如果不行就用valueOf转换为数字,进行加法操作。
对于比较运算,数字和字符串比较先转化为数字,如果有布尔类型就将布尔类型转换为数字,字符串或数字和对象比较,先把对象用toString,valueOf转换为字符串或者数字。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/93425.html

相关文章

  • JS编译之 LHS RHS(你不知道JavaScript 小记一)

    摘要:关于两个专业术语的讨论起自对你不知道的一书的阅读学习。遇到,编译器会询问作用域是否已经有一个该名称的变量存在于同一个作用域的集合中。摘录来自你不知道的。 JS 编译之 LHS RHS 一、前言 最近和朋友聊技术的时候,聊到 LHS RHS,我竟然没听说过 没听说过。。。 于是成功引起了我的好奇心。 关于两个专业术语的讨论起自对《你不知道的JavaScript》一书的阅读学习。 二、编译...

    Cristic 评论0 收藏0
  • JavaScript 你不知道基本包装类型

    摘要:你不知道的基本包装类型声明本文的大部分内容参考自高级程序设计第三版中文版,中间夹杂一些自己阅读这部分内容时的思路。而且,上面的步骤同样适用于类型的类型对应的布尔值和数字值。 JavaScript 你不知道的基本包装类型 声明:本文的大部分内容参考自《JavaScript 高级程序设计(第三版)》(中文版 P.118),中间夹杂一些自己阅读这部分内容时的思路。 JavaScript 中共...

    xingpingz 评论0 收藏0
  • 你不知道JavaScript : 类型

    摘要:你不知道的系列第一章类型类型一中的类型中的变量是不存在类型的,只有具体的值才有类型。 你不知道的JavaScript系列---第一章:类型 类型 一、JavaScript中的类型 JavaScript中的变量是不存在类型的,只有具体的值才有类型。 Js不像其他高级语言,如java等,声明了一个int类型的变量,就必须存放int类型的值,Js中的变量可以存放其允许的所有类型的值,如: ...

    史占广 评论0 收藏0
  • 你不知道this

    摘要:本内容来自你不知道的上卷,做了简单的总结。如果不使用这段代码该如何写呢那就需要给和显示传入一个上下文对象对比发现提供了额一种更优雅的方式来隐式传递一个对象引用。四总结随着你使用的模式越来越复杂,显式传递上下文对象会让代码变得越来越混乱。 本内容来自《你不知道的JavaScript(上卷)》,做了简单的总结。 this关键字是javascript最复杂的机制之一。它是一个很特别的关键字,...

    terasum 评论0 收藏0
  • 你不知道CSS(

    摘要:用来控制表格单元格宽度你也许遇到过给表格设置了宽度,但是不起作用的问题。这是因为单元格的宽度是根据其内容进行调整的。显而易见的,默认情况下,单元格宽度受其内容约束。而设置了后,其单元格宽度变得可控了。 本文首发于我的博客在上文《你不知道的CSS(一)》中,介绍了兄弟选择器美化表单,font-size:0消除间隙,overflow清除浮动,border绘制三角形等7个实用技巧。由于文章长...

    sewerganger 评论0 收藏0

发表评论

0条评论

macg0406

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<