JavaScript監(jiān)測數(shù)據(jù)類型方法全面總結(jié)
需要檢測類型
需要檢測是不是 number string boolean undefined function
使用typeOf 檢測
使用typeOf 檢測是有局限性的 比如 數(shù)組、對象等引用類型檢測出來都是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 檢測
使用 instanceof 檢測 某個對象是否屬于某個類的實例 但是檢測 數(shù)組、對象、函數(shù) 等引用類型檢測出來也是Object
console.log({}.instanceof Object) // true console.log([].instanceof Array) // true console.log(123.instanceof Number) // 報錯
使用 construct 檢測
使用 construct 檢測 可以根據(jù)原型對象檢測
console.log({}.construct === Object) // true console.log([].construct === Array) // true console.log(123.construct === Number) // 報錯
目前準(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 不足:
- 可以檢測出引用類型,但是檢測不出基本類型
- 所有應(yīng)用類型,都是Object的實例
- 可以人為修改原型鏈,導(dǎo)致檢測的結(jié)果不準(zhǔn)缺
typeOf不足:
- 可以檢測出基本類型,但是檢測不出引用類型,檢測出來都是Object
construct不足:
- 可以檢測出引用類型,但是檢測不出基本類型
- 可以人為修改原型鏈,導(dǎo)致檢測的結(jié)果不準(zhǔn)缺
以上就是JavaScript監(jiān)測數(shù)據(jù)類型方法全面總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于JavaScript監(jiān)測數(shù)據(jù)類型的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
微信小程序?qū)崿F(xiàn)緩存根據(jù)不同的id來進行設(shè)置和讀取緩存
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)緩存根據(jù)不同的id來進行設(shè)置和讀取緩存的相關(guān)資料,需要的朋友可以參考下2017-06-06JavaScript前端學(xué)算法題解LeetCode最大重復(fù)子字符串
這篇文章主要為大家介紹了JavaScript前端學(xué)算法題解LeetCode最大重復(fù)子字符串,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-09-09rollup打包引發(fā)對JS模塊循環(huán)引用思考
這篇文章主要為大家介紹了rollup打包引發(fā)的對JS模塊循環(huán)引用的思考,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-08-08threeJs實現(xiàn)波紋擴散及光標(biāo)浮動效果詳解
這篇文章主要為大家介紹了threeJs實現(xiàn)波紋擴散及光標(biāo)浮動效果詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-03-03