關於檢測資料型別的方法

2021-10-12 10:20:55 字數 2962 閱讀 4876

1、typeof用來檢測資料型別的運算子

依據上圖清晰可見typeof檢測資料型別包括:「number」、「string」、「undefined」、「function」、"object"

typeof資料監測侷限性:

typeof null ====》「object」

不能具體細分是陣列還是正則,還是物件中其他值,因為使用typeof檢測資料型別,對於物件資料型別中的值,最後返回的結果都是"object"

2.instanceof 檢測某乙個例項是否屬於某個類

let d =

console.

log(d instanceof

object

)// true

侷限性:對於基本資料型別而言,字面量方式建立出來的結果和例項方式建立出來的結果是有一定的區別的。從嚴格意義上講,只有例項建立出來的結果才是標準的物件資料型別值,也是標準的number這個類的乙個例項;對於字面量方式上建立出來的結果是基本的資料型別值,不是嚴謹的例項,但是由於js的鬆散特點,導致了可以使用number.prototype上的方法。

a.不能用來檢測和處理字面量方式建立出來的基本資料型別值

console.

log(

0instanceof

number

)// false

console.

log(

newnumber(0

)instanceof

number

)// true

b.instanceof的特性:只要在當前例項的原型鏈上,我們用其檢測的結果都為true

let c =[0

,1,3

,4]console.

log(c instanceof

array

,c instanceof

object

)//true true

leth

=functionfn(

)console.

log(h instanceof

function

,h instanceof

object

)//true true

3.constructor建構函式作用和instanceof非常相似 constructor可以處理基本資料型別的檢測constructor檢測object和instanceof不一樣一般情況下是檢測不了的

let a =0;

console.

log(a.constructor === number)

//true

let c =[0

,1,3

,4]console.

log(c.constructor === array)

// true

侷限性:我們可以把類的原型進行重寫,在重寫的過程中很有可能出現把之前的constructor給覆蓋掉了,這樣檢測出來的結果就不準確了。

對於特殊的資料型別null和undefined,他們所屬的類是null和undefined,但是瀏覽器把這兩個類保護起來了,不允許我們在外面訪問使用。

4、object.prototype.tostring.call()最準確最常用的方式 各種型別的都可以檢測(基本和引用)

首先獲取object原型上的tostring方法,讓方法執行,並且改變方法中的this關鍵字的指向

tostring的理解:

表面上看應該是轉化成字串,但是某些tostring方法不僅僅是轉化為字串

對於number、string、boolean、array、regexp、date、function原型上的tostring方法都是把當前的資料型別轉化為字串的型別(他們的作用僅僅是用來轉換為字串的)

object.prototype.tostring()並不是用來轉化為字串的,他的作用是返回當前方法執行主體(方法中的this)所屬類的詳細資訊。

console.

log(()

.tostring()

)//[object object]

console.

log(math.

tostring()

)//[object math]

let obj =

console.

log(obj.

tostring()

)//[object object]

//tostring中的this是obj,返回的是obj所屬的類的資訊。[object object] 第乙個object代表當前例項是物件資料型別的(這個是固定的),第二個object代表的是obj所屬的類是object

console.

log((1

).tostring()

)// "1" number.prototype.tostring轉化為字串

console.

log(

(128).

tostring(2

))//引數2或8或10,表示把數字轉化為2進製、8進製、10進製

let arr =

;console.

log(object.prototype.tostring.

call

(arr)

)//[object array]

檢測資料型別的經典方法

用 typeof 是否能準確判斷乙個物件變數,答案是否定的,null 的結果也是 object,陣列的結果也是 object,有時候我們需要的是 純粹 的 object 物件。如何避免呢?比較好的方式是 console.log object.prototype.tostring.call obj o...

檢測資料型別

js中檢測資料型別只有四種方式 1 typeof 用來檢測資料型別的運算子 typeof value 1 返回值 首先是乙個字串,然後包含了我們常用的資料型別,例 如 number string boolean undefined object function typeof typeof type...

Python檢測資料型別的方法總結

我們在用python進行程式開發的時候,很多時候我們需要檢測一下當前的變程式設計客棧量的資料型別。比如需要在使用字串操作函式之前先檢測一下當前變數是否是字串。下面小編給大家分享一下在python中如何檢測資料型別 首先我們開啟cmd控制台,進入到python環境,然後宣告乙個列表,如下圖所示 然後我...