你不知道的JavaScript(二)

第三章 原生函数
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取整。it

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

相关文章
相关标签/搜索