小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

小結(jié) javascript中的類型檢測(cè)

 quasiceo 2013-10-10

小結(jié) javascript中的類型檢測(cè)


先吐槽一下博客園的編輯器,太不好用了,一旦粘貼個(gè)表格進(jìn)來(lái)就會(huì)卡死,每次都要用html編輯器寫,不爽!
關(guān)于javascript的類型檢測(cè),早在實(shí)習(xí)的時(shí)候就應(yīng)該總結(jié),一直拖到現(xiàn)在,當(dāng)時(shí)因?yàn)檫@個(gè)問(wèn)題還出了線上bug。今天回顧《編寫可維護(hù)的javascript》第八章“避免空比較”,里面詳細(xì)說(shuō)明了javascript中各種類型比較問(wèn)題,現(xiàn)在想來(lái)當(dāng)時(shí)的代碼基本把所有的忌諱都犯了一遍,就那么上線了簡(jiǎn)直對(duì)不起黨和人民。。。

類型檢測(cè)
類型 檢測(cè)方法 檢測(cè)對(duì)象 檢測(cè)結(jié)果 缺點(diǎn) 備注
原始值 typeof 字符串 string    
數(shù)字 number    
布爾值 boolean    
undefined undefined    
null object 引用類型的typeof結(jié)果為object,不能夠起到檢測(cè)的作用 檢測(cè)null應(yīng)用===或!==
引用值 instanceof 內(nèi)置類型:Object,Date,Error,RegExp true   instanceof會(huì)檢測(cè)原型鏈,每個(gè)對(duì)象都繼承自O(shè)bject
自定義類型及內(nèi)置類型中的function、Array true frame A、B中分別定義構(gòu)造函數(shù)Person,且兩個(gè)Person完全相同。A中創(chuàng)建實(shí)例傳入B中,則有,
frameAPersonInstance instanceof frameAPerson //true
frameAPersonInstance instanceof frameBPerson //false
唯一的檢測(cè)方法
typeof function function //IE8以上
object //IE8及以下
針對(duì)IE8及以下版本,由于其未將DOM實(shí)現(xiàn)為內(nèi)置的javascript方法,需使用
if("xxx" in document)(){};來(lái)檢測(cè)DOM的方法
 
Array.isArray() Array true ECMAScript5,適用于IE9+,FF4+,SF5+,O10.5+,Chrome  
Object.prototype.toString.call(value) === "[Object Array]" true   這種方法適用于所有內(nèi)置對(duì)象,如JSON等
屬性是否在對(duì)象中存在 “XXX”in object 屬性     會(huì)深入檢測(cè)實(shí)例及其繼承的對(duì)象原型
hasOwnProperty() true //IE8以上
報(bào)錯(cuò) //IE8及以下
針對(duì)IE8及以下版本,由于DOM對(duì)象并非繼承自O(shè)bject,因此不包含此方法。所以需要檢測(cè)方法是否存在:
if(object.hasOwnProperty("related")){}; //針對(duì)非DOM對(duì)象
if("hasOwnProperty" in object && object.hasOwnProperty("related")){}; //不確定是否為DOM對(duì)象時(shí)
調(diào)用DOM對(duì)象的hasOwnProperty方法之前應(yīng)先檢測(cè)其是否存在!若已經(jīng)知道對(duì)象不是DOM則可省略檢測(cè)存在。

總的來(lái)說(shuō):
typeof通常用于基本類型(null除外)及function的檢測(cè);
instanceof通常用于自定義類型的檢測(cè);
準(zhǔn)確的類型檢測(cè)使用Object.prototype.toString.call(value) === "[Object Array]"等;
屬性的檢測(cè)使用in和hasOwnProperty()。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多