JavaScript監(jiān)測(cè)數(shù)據(jù)類型方法全面總結(jié)
需要檢測(cè)類型
需要檢測(cè)是不是 number string boolean undefined function
使用typeOf 檢測(cè)
使用typeOf 檢測(cè)是有局限性的 比如 數(shù)組、對(duì)象等引用類型檢測(cè)出來(lái)都是Object
console.log(typeOf 123) // Number
console.log(typeOf '123') // String
console.log(typeOf NaN) // Number
console.log(typeOf true) // Boolean
console.log(typeOf undefined) // Undefined
console.log(typeOf function(){}) // Function
console.log(typeOf null) // Object
console.log(typeOf {}) // Object
console.log(typeOf []) // Object使用 instanceof 檢測(cè)
使用 instanceof 檢測(cè) 某個(gè)對(duì)象是否屬于某個(gè)類的實(shí)例 但是檢測(cè) 數(shù)組、對(duì)象、函數(shù) 等引用類型檢測(cè)出來(lái)也是Object
console.log({}.instanceof Object) // true
console.log([].instanceof Array) // true
console.log(123.instanceof Number) // 報(bào)錯(cuò)使用 construct 檢測(cè)
使用 construct 檢測(cè) 可以根據(jù)原型對(duì)象檢測(cè)
console.log({}.construct === Object) // true
console.log([].construct === Array) // true
console.log(123.construct === Number) // 報(bào)錯(cuò)目前準(zhǔn)確的檢:Object.prototype.toString.call()
console.log(Object.prototype.toString.call(123)) // [object Number]
console.log(Object.prototype.toString.call('ok')) // [object String]
console.log(Object.prototype.toString.call(true)) // [object Boolean]
console.log(Object.prototype.toString.call([]) // [object Array]
console.log(Object.prototype.toString.call({}) // [object Object]
console.log(Object.prototype.toString.call(function(){}) // [object Function]
console.log(Object.prototype.toString.call(/abc/) // [object RegExp]
console.log(Object.prototype.toString.call(null) // [object Null]
console.log(Object.prototype.toString.call(undefined) // [object Undefined]
let d= new Date()
console.log(Object.prototype.toString.call(d) // [object Date]
let s = Symbol
console.log(Object.prototype.toString.call(s) // [object Symbol]不足
instanceof 不足:
- 可以檢測(cè)出引用類型,但是檢測(cè)不出基本類型
- 所有應(yīng)用類型,都是Object的實(shí)例
- 可以人為修改原型鏈,導(dǎo)致檢測(cè)的結(jié)果不準(zhǔn)缺
typeOf不足:
- 可以檢測(cè)出基本類型,但是檢測(cè)不出引用類型,檢測(cè)出來(lái)都是Object
construct不足:
- 可以檢測(cè)出引用類型,但是檢測(cè)不出基本類型
- 可以人為修改原型鏈,導(dǎo)致檢測(cè)的結(jié)果不準(zhǔn)缺
以上就是JavaScript監(jiān)測(cè)數(shù)據(jù)類型方法全面總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于JavaScript監(jiān)測(cè)數(shù)據(jù)類型的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
微信小程序?qū)崿F(xiàn)緩存根據(jù)不同的id來(lái)進(jìn)行設(shè)置和讀取緩存
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)緩存根據(jù)不同的id來(lái)進(jìn)行設(shè)置和讀取緩存的相關(guān)資料,需要的朋友可以參考下2017-06-06
JavaScript執(zhí)行機(jī)制詳細(xì)介紹
這篇文章主要介紹了JavaScript執(zhí)行機(jī)制,想要搞懂JavaScript執(zhí)行機(jī)制,便與進(jìn)程與線程的概念脫不了干系,下面我們就來(lái)看看這JavaScript執(zhí)行機(jī)制的具體介紹吧,需要的朋友可以參考一下2021-12-12
JavaScript前端學(xué)算法題解LeetCode最大重復(fù)子字符串
這篇文章主要為大家介紹了JavaScript前端學(xué)算法題解LeetCode最大重復(fù)子字符串,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
rollup打包引發(fā)對(duì)JS模塊循環(huán)引用思考
這篇文章主要為大家介紹了rollup打包引發(fā)的對(duì)JS模塊循環(huán)引用的思考,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
threeJs實(shí)現(xiàn)波紋擴(kuò)散及光標(biāo)浮動(dòng)效果詳解
這篇文章主要為大家介紹了threeJs實(shí)現(xiàn)波紋擴(kuò)散及光標(biāo)浮動(dòng)效果詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03

