小編給大家分享一下javascript中判斷對象數(shù)據(jù)類型的方法是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創(chuàng)新互聯(lián)建站主要為客戶提供服務(wù)項目涵蓋了網(wǎng)頁視覺設(shè)計、VI標(biāo)志設(shè)計、成都全網(wǎng)營銷推廣、網(wǎng)站程序開發(fā)、HTML5響應(yīng)式網(wǎng)站建設(shè)、手機網(wǎng)站制作設(shè)計、微商城、網(wǎng)站托管及成都網(wǎng)站維護(hù)、WEB系統(tǒng)開發(fā)、域名注冊、國內(nèi)外服務(wù)器租用、視頻、平面設(shè)計、SEO優(yōu)化排名。設(shè)計、前端、后端三個建站步驟的完善服務(wù)體系。一人跟蹤測試的建站服務(wù)標(biāo)準(zhǔn)。已經(jīng)為成都銅雕雕塑行業(yè)客戶提供了網(wǎng)站改版服務(wù)。對js中不同數(shù)據(jù)的布爾值類型總結(jié):false:空字符串;null;undefined;0;NaN。true:除了上面的false的情況其他都為true;
javascript中有六種數(shù)據(jù)類型:string;boolean;Array;Object;null;undefined。如何檢測這些數(shù)據(jù)類型呢,總結(jié)方法如下:
第一種方法:typeof
var obj = {'name':'Tom'} var arr = ['a','b','c'] var str = 'chenxinming' var bool = true var num = 1 var n = null var fn = function(n){ console.log(n) } console.log(typeof obj) // object console.log(typeof arr) // object console.log(typeof str) // string console.log(typeof bool) // boolean console.log(typeof num) // number console.log(typeof n) // object console.log(typeof fn) // function
通過上面測試,發(fā)現(xiàn)typeof檢測數(shù)組和字典時返回類型都是Object,無法區(qū)別是數(shù)組還是對象。如果想要檢查是數(shù)組還是對象使用instanceof方法和constructor方法
第二種方法:instanceof
var obj = {'name':'Tom'} var arr = ['a','b','c'] var str = 'chenxinming' var bool = true var num = 1 var n = null var fn = function(n){ console.log(n) } console.log(obj instanceof Object) // true console.log(arr instanceof Array) // true console.log(str instanceof String) // false console.log(bool instanceof Boolean) // false console.log(num instanceof Number) // false console.log(n instanceof Object) // false console.log(fn instanceof Function) // true
注意:instanceof 只可以用來判斷數(shù)組和對象、函數(shù),不能判斷string、數(shù)字和boolean類型,如果需要判斷string和boolean可使用tostring()方法。
特別注意:
instanceof方法在檢查數(shù)組是否為對象時,返回結(jié)果為True
var arr = ['a','b','c'] console.log(arr instanceof Object) // true
如果使用instanceof需要嚴(yán)格判斷是數(shù)組或者是對象時,改進(jìn)代碼如下:
var obj = {'name':'Tom'} var arr = ['a','b','c'] var str = 'chenxinming' var getDataType = function(data){ if(data instanceof Array){ return 'Array' } else if (data instanceof Object){ return 'Object' } else{ return 'data is not obejct type' } } getDataType(obj) // Object getDataType(obj) // Array getDataType(obj) // data is not obejct type
第三種方法:constructor
var obj = {'name':'Tom'} var arr = ['a','b','c'] var str = 'chenxinming' var bool = true var num = 1 var n = null var fn = function(n){ console.log(n) } console.log(obj.constructor == Object) // true console.log(arr.constructor == Array) // true console.log(str.constructor == String) // true console.log(bool.constructor == Boolean) // true console.log(num.constructor == Number) // true console.log(fn.constructor == Function) // true
測試發(fā)現(xiàn)constructor支持檢查Object、Array、String、Boolean、Number、Function
第四種方法:toString(建議使用)
var obj = {'name':'Tom'} var arr = ['a','b','c'] var str = 'chenxinming' var bool = true var num = 1 var n = null var fn = function(n){ console.log(n) } console.log(Object.prototype.toString.call(obj)) // [object Object] console.log(Object.prototype.toString.call(arr)) // [object Array] console.log(Object.prototype.toString.call(str)) // [object String] console.log(Object.prototype.toString.call(bool)) // [object Boolean] console.log(Object.prototype.toString.call(num)) // [object Number] console.log(Object.prototype.toString.call(n)) // [object Null] console.log(Object.prototype.toString.call(fn)) // [object Function]
從測試看出來,最好使用toString,這個方法功能比較全面。
以上是javascript中判斷對象數(shù)據(jù)類型的方法是什么的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。