JavaScript數(shù)據(jù)類型檢測

1、typeof
原理: 直接在計算機底層基于數(shù)據(jù)類型的值(二進制)進行檢測
缺點: typeof null "object" 對象存儲在計算機中,都是以000開始的二進制存儲, null也是000開頭,所以檢測出來的結(jié)果是對象
不能判斷對象: typeof 普通對象/數(shù)組對象/正則對象/日期對象 “object”

2、instanceof 檢測當(dāng)前實例是否屬于這個類的
原理: 只要當(dāng)前類出現(xiàn)在實例的原型鏈上, 結(jié)果都是true
由于我們可以肆意的修改原型的指向,所以檢測出來的結(jié)果是不準(zhǔn)的, 只能判斷類在不在原型鏈上
不能檢測基本數(shù)據(jù)類型

3、constructor
原理: 只有當(dāng)前類是該實例的原型對象所指向的構(gòu)造函數(shù)函數(shù)時 返回true
用來判斷 類 是 實例的構(gòu)造函數(shù)
用起來看似比instanceof好用一些, 因為constructor可以隨意修改, 所以也不準(zhǔn)
是支持檢測基本類型的

4、Object.prototype.toString.call()
推薦的使用方法, 精確的判斷基本數(shù)據(jù)類型和引用類型

NaN: 不是一個有效數(shù)字 但是它屬于Number類型 typeof NaN => "number"
NaN == NaN false

可以自己封裝一個方法, 基本數(shù)據(jù)類型用typeof 復(fù)雜類型用call

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容