javascript中類型判斷的最佳方式
javascript有8種數(shù)據(jù)類型
值類型
- Number
- Null
- Undefined
- String
- Symbol
- Boolean
- BigInt
引用類型
- Object
- Array
- Function
判斷數(shù)據(jù)類型有以下4種判斷方法
第一種方式: typeof
typeof null ---> "object" typeof undefined ---> "undefined" typeof true | false ---> 'boolean' typeof 42 ---> 'number' typeof "42" ---> 'string' typeof { name : '1'} | [] ---> 'object' typeof Symbol ---> 'symbol' typeof ()=>{} ---> 'function' typeof void 0 ---> 'undefined'
第二種方式 instanceof 但是這種方式只適合判斷object類型
instanceof運(yùn)算符用來判斷一個(gè)構(gòu)造函數(shù)的prototype屬性所指向的對(duì)象是否存在另外一個(gè)要檢測對(duì)象的原型鏈上
詳細(xì)介紹請(qǐng)看這里:javascript中的instanceof運(yùn)算符
比如 : var arr = [] ; arr instanceof Array ---> true null instanceof Object ---> false [function] instanceof Object | Function --> true
第三種方式 Object.prototype.toString.call() 這種方式可以將全部的數(shù)據(jù)類型檢測出來 也是 推薦的方式
因?yàn)閠oString是Object的原型方法, 而 Array Function 等都是Object的實(shí)例。都重寫了toString 方法。返回的是類型的字符串
Object.prototype.toString.call(null) ---> [object Null] Object.prototupe.toString.call(undefined) ---> [object Undefined] Object.prototype.toString.call(123) ---> [object Number] Object.prototype.toString.call(true) ---> [object Boolean] Object.prototype.toString.call('123') ---> [object String] Object.prototype.toString.call({}) ---> [object Object] Object.prototype.toString.call([]) ---> [object Array] Object.prototype.toString.call(Math) ---> [object Math] Object.prototype.toString.call(function(){}) ---> [object Function] Objdec.prototype.toString.call(new Date) ---> [object Date] Object.prototype.toString.call(Symbol()) ---> [object Symbol]
第四種方式: constructor 判斷對(duì)象的構(gòu)造函。
1. null 是js 原型鏈的起點(diǎn),沒有構(gòu)造函數(shù) 2. undefined 沒有構(gòu)造函數(shù) 3. [].constructor === Array ---> true 4. [string].constructor === String 5. [object].constructor === object 6. [number].constructor === Number 7. [symbol].constructor === Symbol 8. [function].constructor === Function 9. [new Date].constructor === Date 10. [RegExp].constructor === RegExp
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript實(shí)現(xiàn)移動(dòng)端簽字功能
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)移動(dòng)端簽字功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10JavaScript 預(yù)解析的4種實(shí)現(xiàn)方法解析
這篇文章主要介紹了JavaScript 預(yù)解析的4種實(shí)現(xiàn)方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09JavaScript實(shí)現(xiàn)枚舉的幾種方法總結(jié)
在前端開發(fā)中,我們可能經(jīng)常需要用到枚舉,使用枚舉的好處是為了讓代碼的可讀性更強(qiáng),避免直接使用數(shù)字或未知的字符串,但是在JavaScript中,要自己實(shí)現(xiàn)一個(gè)枚舉功能,那么大家能想到多少種實(shí)現(xiàn)枚舉的方法呢,我將介紹幾種實(shí)現(xiàn)枚舉的好方法2023-08-08JS SetInterval 代碼實(shí)現(xiàn)頁面輪詢
setInterval 是一個(gè)實(shí)現(xiàn)定時(shí)調(diào)用的函數(shù),可按照指定的周期(以毫秒計(jì))來調(diào)用函數(shù)或計(jì)算表達(dá)式。下面通過本文給大家分享JS SetInterval 代碼實(shí)現(xiàn)頁面輪詢,感興趣的朋友一起看看吧2017-08-08js結(jié)合css實(shí)現(xiàn)登錄后才能復(fù)制的效果實(shí)例
很多網(wǎng)站都有登錄后才能復(fù)制的限制,什么原理呢?css屬性u(píng)ser-select:none,通常會(huì)采用這種方式來禁止復(fù)制文本。但瀏覽開發(fā)者工具-審查元素,取消此樣式后,就可以選中文本了。想要完整地禁止復(fù)制,還需要通過js控制選擇的內(nèi)容。2023-07-07