JavaScript是面向對象的語言,使用”.”操作符可以訪問對象的屬性和方法,而對于基本類型(null, undefined, bool, number, string)應該是值類型,沒有屬性和方法,然而
var s='this is a string'; alert(s.length); alert(s.indexOf('is'));
結果很簡單,但是仔細想想還真奇怪,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_INFINITY:-Infiny //負無窮
POSITIVE_INFINITY:Infinity //正無窮
NaN:NaN //非數字
Number
對象還有一些方法,可以用這些方法對數值進行格式化或進行轉換
toExponential //以指數形式返回 數字的字符串表示
toFixed //把Number四舍五入為指定小數位數的數字
toPrecision //在對象的值超出指定位數時將其轉換為指數計數法
toString //返回數字的字符串表示
valueOf //繼承自object
String
String
對象是文本值的包裝器。除了存儲文本,String
對象包含一個屬性和各種 方法來操作或收集有關文本的信息,String
對象不需要進行實例化便能夠使用。
String
對象只有一個只讀的length
屬性用于返回字符串的長度。String對象擁有很多方法
charAt
charCodeAt
concat
fromCharCode
indexOf
lastIndexOf
match
replace
search
slice
split
substr
substring
toLowerCase
toUpperCase
包裝對象
除了上面三個對象,JavaScript還擁有Date、Array、Math等內置對象,這三個經常顯示使用,所以非常熟悉,知道了內置對象就可以看看上面例子是怎么回事兒了。
只要是引用了字符串的屬性和方法,JavaScript就會將字符串值通過new String(s)的方式轉為內置對象String,一旦引用結束,這個對象就會銷毀。所以上面代碼在使用的實際上是String對象的length屬性和indexOf方法。
同樣的道理,數字和布爾值的處理也類似。,null和undefined沒有對應對象。既然有對象生成,能不能這樣
var s='this is a string'; s.len=10; alert(s.len);
結果并沒有返回10,而是undefined!不是說好了是個對象嗎!正如剛才提到第二行代碼只是創建了一個臨時的String對象,隨即銷毀,第三行代碼又會創建一個新的臨時對象(這就是低版本IE頻繁處理字符串效率低的一個原因),自然沒有len屬性。這個創建的臨時對象就成為包裝對象。沒想到一行簡單的代碼還包含這么多姿勢。
文章列表