重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
這篇文章將為大家詳細講解有關(guān)怎么在JavaScript中檢測數(shù)組的類型,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
1.instanceof
當只有一個全局執(zhí)行環(huán)境時適用,如果包含多個框架,就存在兩個以上不同版本的Array構(gòu)造函數(shù),如果從一個框架向另一個框架傳遞數(shù)組,傳入的數(shù)組與在第二個框架中原生創(chuàng)建的數(shù)組分別具有不同的構(gòu)造函數(shù),即為不同類型
if (value instanceof Array) { //對數(shù)組執(zhí)行某項操作 }
2. Array.isArray() 方法
因為是ES5新增的,只支持IE9+、Firefox 4+、Safari 5+、Opera 10.5+和Chrome
if (Array.isArray(value)) { //對數(shù)組執(zhí)行某些操作 }
3.Object.prototype.toString.call()方法
適用于所有環(huán)境,只支持原生的對象,Object的toString()方法不能檢測非原生構(gòu)造函數(shù)的構(gòu)造函數(shù)名。開發(fā)人員自定義的任何構(gòu)造函數(shù)都將返回[object Object]
原理:在任何值上直接調(diào)用Object的原生toString()方法,都會返回[object NativeConstrctorName]格式的字符串,每個類內(nèi)部都有一個class屬性,這個屬性中就指定了上述字符串中構(gòu)造函數(shù)名。
var value = [] console.log(Object.prototype.toString.call(value))//"[Object Array]"
由于原生數(shù)組的構(gòu)造函數(shù)名和作用域無關(guān),因此使用toString()方法就能保證輸出一樣的值。
為什么不使用對象自己的toString() 方法?
var value = [] console.log(value.toString())//" " value = ['pp','oo'] console.log(value.toString())//"pp,oo" value = ['pp',"oo"] console.log(Object.prototype.toString.call(value))//[object Array]
Array的tostring()方法被重寫了(很多原生對象均如此),所以它會調(diào)用自己構(gòu)造函數(shù)上的toString()方法,返回其他的字符串
還可以用此方法來判斷是不是原生函數(shù)或者正則表達式
function isFunction(value){ return Object.prototype.toString.call(value) === “[object Function]” }//不適用于IE中以COM對象實現(xiàn)的任何函數(shù) function isRegExp(value){ return Object.prototype.toString.call(value) === “[object RegExp]” }
關(guān)于怎么在JavaScript中檢測數(shù)組的類型就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。