js中檢測資料型別只有四種方式
1、typeof 用來檢測資料型別的運算子
[typeof value]
1)返回值:首先是乙個字串,然後包含了我們常用的資料型別,例
如:
"number"、"string"、"boolean"、"undefined"、"object"、"function"
typeof
typeof
typeof[12
]->
"string"2)
typeof
null
->
"object" 因為null是乙個空物件指標3)
typeof不能具體的細分物件、陣列、正則等,因為不管檢測哪乙個返回的都是"object"
2、instanceof / constructor
1
)instanceof
:檢測當前例項是否屬於某乙個類,屬於的話返回true
,不屬於返回false
var ary=
; ary instanceof
array
->
true
ary instanceof
regexp
->
false
ary instanceof
object
->
true 所有的物件都是object這個基類的乙個例項
2)constructor
ary.constructor===array -
>
true
說明ary是array這個類的乙個例項
(constructor可以讓使用者自己來修改,所有我們一般不用這個來檢測)
3)instanceof的侷限性:只要在這個例項的原型鏈上的類,用instanceof檢測的時候都為true
在類的繼承中,我們只是單純通過instanceof來檢測資料型別的話是不準確的
[案例]
functionfn(
) fn.prototype =
newarray
;var f =
newfn
;//f只是繼承了陣列中常用的方法,但是不是陣列,例如:在梨樹上嫁接蘋果樹,蘋果樹只是繼承使用了梨樹的水分和營養,但是長出來的果實還是蘋果而不是梨
instanceof fn);//->true
instanceof array);//->true
instanceof object);//->true
var odiv=document.
getelementbyid
("div1");
//odiv->htmldivelement->htmlelement->element->node->eventtarget->object
console.
log(odiv instanceof
eventtarget);
//->true
3、tostring檢測資料型別(常用而且相對來說精準的檢測方式,上述方式出現的缺陷在這裡都彌補了)
1)原理:在object.prototype上有乙個tostring方法,這個方法執行的時候,會返回方法中this關鍵字對應資料值的資料型別,例如:
object.prototype.
tostring()
->返回的是 object.prototype 的資料型別 -
>
"[object object]"
f.tostring()
->返回的是f的資料型別 -
>
"[object object]"
object.prototype.tostring.
call(12
)->檢測12的資料型別 -
>
"[object number]"
object.prototype.tostring.
call
("zhufeng")-
>
"[object string]"
object.prototype.tostring.
call
(null)-
>
"[object null]"
object.prototype.tostring.
call
(undefined)
->
"[object undefined]"
object.prototype.tostring.
call([
])->
"[object array]"
object.prototype.tostring.
call
(/^$/)-
>
"[object regexp]"
object.prototype.tostring.
call
(function()
)->
"[object function]"
3)檢測的返回值 -> 「[object 當前資料型別所屬的內建類]」 js檢測資料型別
要檢測乙個變數是不是基本資料型別?typeof 操作符是最佳的工具。說得更具體一 點,typeof 操作符是確定乙個變數是字串 數值 布林值,還是undefined 的最佳工具。如果變 量的值是乙個物件或null,則typeof 操作符會像下面例子中所示的那樣返回 object var s nich...
JS資料型別檢測
在js的日常使用中,經常需要檢測資料的型別,現在,就來看一下,js有哪些方法可以檢測資料的型別。typeof操作符返回乙個字串,表示未經計算的運算元的型別。typeof是js原生提供用來檢測型別的api,然而,並沒有什麼用。為什麼呢?因為,typeof不能準確地檢測出我們所想要知道的資料的型別。ty...
JS 資料型別檢測
tpeof val 用來檢測資料型別的運算子。基於typeof檢測出來的結果 首先是乙個字串 字串中是對應的型別 侷限性 typeof null object 但是null並不是物件 基於typeof 無法細分出當前值是普通物件還是陣列物件等,只要是物件型別,返回結果都是 object typeof...