檢測資料型別

2021-09-01 22:11:57 字數 2615 閱讀 5902

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...