第三章 原生函數
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