JavaScript是物件導向的語言,使用」.」運算元可以存取物件的屬性和方法,而對於基本型別(null, undefined, bool, number, string)應該是值類型,沒有屬性和方法,然而
結果很簡單,但仔細想想還真奇怪,string不是值型嗎!怎麼又有屬性又有方法的!
內建物件
JavaScript有一系列內建物件來建立語言的基本功能,具體看一下
Boolean
Boolean 物件表示兩個值:"true" 或 "false"。當作為一個建構函數(帶有運算符 new)呼叫時,Boolean() 將把它的參數轉換成一個布林值,並且傳回一個包含該值的 Boolean 物件。如果當一個函數(不含運算子new)呼叫時,Boolean() 只會將它的參數轉換成一個原始的布林值,並且傳回這個值,如果省略value 參數,或設定為0、-0、 null、""、false、undefined 或NaN,則該物件設為false。否則設定為 true(即使 value 參數是字串 "false")。
Boolean 物件包含 toString 和 valueOf 方法, Boolean 最常用於在 條件語句中 true 或 false 值的簡單判斷,布林值和條件語句的組合提供了一種使用 JavaScript 建立邏輯的方式。
Number
Number物件是一個數值包裝器,該物件包含幾個唯讀屬性
•MAX_VALUE:1.7976931348623157e 308 //JavaScript能夠處理的最大數
•MIN_VALUE:5e-324 //JavaScript能夠處理的最小數
•NEGATIVE_INFINFINITY:-
•NaN:NaN //非數字
Number 物件還有一些方法,可以用這些方法格式化數值或轉換
•toExponential //以指數形式傳回數字的字串表示
•toFixed //把Number四捨五入為指定小數位數的數字
•toPrecision //在物件的值超出指定位數時將其轉換為指數計數法
•toString //傳回數字的字串表示
•valueOf //繼承自object
String
String 物件是文字值的包裝器。除了儲存文本,String 物件包含一個屬性和各種 方法來操作或收集有關文本的信息,String 物件不需要進行實例化便能夠使用。
String 物件只有一個唯讀的length屬性用來傳回字串的長度。 String物件擁有很多方法
•charAt
•charCodeAt
•concat
•fromCharCode
•indexOf
•lastIndexOf
•match
•replaceplace>•lastIndexOf
•match
•replaceplace>•
•split
•substr
•substring
•toLowerCase
•toUpperCase
包裝物件
除了上面三個對象,JavaScript還擁有Date、Array、Math等內建對象,這三個經常顯示使用,所以非常熟悉,知道了內置對象就可以看看上面例子是怎麼回事兒了。
只要是引用了字串的屬性和方法,JavaScript就會將字串值透過new String(s)的方式轉為內建物件String,一旦引用結束,這個物件就會銷毀。所以上面程式碼在使用的其實是String物件的length屬性和indexOf方法。
同樣的道理,數字和布林值的處理也類似。 ,null和undefined沒有對應物件。既然有物件生成,能不能這樣
結果並沒有回傳10,而是undefined!不是說好了是個對象嗎!正如剛才提到第二行程式碼只是創建了一個臨時的String對象,隨即銷毀,第三行程式碼又會創建一個新的臨時對象(這就是低版本IE頻繁處理字符串效率低的一個原因),自然沒有len屬性。這個創建的臨時物件就成為包裝物件。沒想到一行簡單的程式碼還包含這麼多姿勢。