1)、通常在檢測JavaScript中類型的時候都是使用typeof運算子,然後返回一個識別運算數類型的字串,對於任何的變數來說,使用typeof 運算子返回結果只有6中類型
1、number 2、string 3、boolean 4、object 5、function 6 、undefined。 但是在大家可以試試在使用typeof檢測null值的時候,返回的是object,這個有點不適合,大家想,null應該是沒有類型的說法的,所以一般人在處理null的類型判斷都是做一個方法
function type(oo){ return (oo ==null) ? "null":(typeof oo);}
2)、但是typeof 不能夠檢測複雜的資料類型的,比如運算式對象,日期對象,數學對象。
它只能夠返回一個object類型,並不能知道具體到日期什麼的,
javascript中一種判斷資料類型的方法,constructor屬性,使用方法是
var value=underfined;
alert(value.constructor);
但是數值直接量是不能這樣用的 ,需要添加一個小括弧,這樣的話,小括弧運算子能把數值直接量轉換為對象,有點像Java中的Integer 和 int 類型一樣,
alert((30).constructor)
3)、使用toString()方法也是可以檢測物件類型,而且是最準確的,通常在是把對象轉成字串,然後檢測下字串中是否包含了數組所特有的標準字元,
返回的字串形式如下
[object calss]
object 是通用類型,那麼class 表示對象的內部類型,內部類型的名稱與該對象的的建構函式名是對應的,比如Array對象的class 是Array,Date對象的class “Date”
具體寫法如下,
var date = new Date(); alert(typeof date); var m=Object.prototype.toString; alert(m.apply(date));
奉獻一段通用的類型檢測代碼
function type(o){
var _toString = Object.prototype.toString;
var _type ={
"underfined":"underfined",
"number":"number",
"boolean":"boolean",
"string":"string",
''[object Function] ":"function",
''[object RegExp] ":"RegExp",
''[object Array] ":"Array",
''[object Date] ":"Date",
''[object Error] ":"Error"
}
return _type[typeof o] || _type[_toString.call(o)] || (o?"object":"null")
}