JavaScript判斷變量是否為數(shù)組的方法(Array)
今天小編給大家整理些關(guān)于javascript判斷變量是否是數(shù)組(Array)的相關(guān)知識(shí),主要通過(guò)以下四點(diǎn)給大家展開話題,具體內(nèi)容如下所示:
1. typeof真的那么厲害嗎??
//首先看代碼 var ary = [1,23,4]; console.log(typeof ary); //輸出結(jié)果是Object
上面的辦法并不能實(shí)時(shí)的檢測(cè)出是否是數(shù)組,只能判斷其類型,所以說(shuō)typeof判斷基本類型數(shù)據(jù)還是挺好的,但是不能準(zhǔn)確測(cè)試出是否是數(shù)組(typeof的具體用法以后提及,現(xiàn)在回歸正題)
2.instanceof 判斷
var ary = [1,23,4]; console.log(ary instanceof Array)//true;
從輸出的效果來(lái)看,還是挺令人滿意的,能準(zhǔn)確的檢測(cè)出數(shù)據(jù)類型是否是數(shù)組,不要高興的太早,大家先想想這個(gè)的缺點(diǎn),我們接著說(shuō)第三種方法
3.原型鏈方法
var ary = [1,23,4]; console.log(ary.__proto__.constructor==Array);//true console.log(ary.constructor==Array)//true 這兩段代碼是一樣的
這個(gè)辦法開起來(lái)好高大上哦~~,利用了原型鏈的方法,但是但是,這個(gè)是有兼容的哦,在IE早期版本里面__proto__是沒(méi)有定義的哦~而且,這個(gè)仍然有局限性,我們現(xiàn)在就來(lái)總結(jié)一下第2種方法和第3種方法局限性
總結(jié)一下第2種方法和第3種方法局限性
instanceof 和constructor 判斷的變量,必須在當(dāng)前頁(yè)面聲明的,比如,一個(gè)頁(yè)面(父頁(yè)面)有一個(gè)框架,框架中引用了一個(gè)頁(yè)面(子頁(yè)面),在子頁(yè)面中聲明了一個(gè)ary,并將其賦值給父頁(yè)面的一個(gè)變量,這時(shí)判斷該變量,Array == object.constructor;會(huì)返回false;
原因:
1、array屬于引用型數(shù)據(jù),在傳遞過(guò)程中,僅僅是引用地址的傳遞。
2、每個(gè)頁(yè)面的Array原生對(duì)象所引用的地址是不一樣的,在子頁(yè)面聲明的array,所對(duì)應(yīng)的構(gòu)造函數(shù),是子頁(yè)面的Array對(duì)象;父頁(yè)面來(lái)進(jìn)行判斷,使用的Array并不等于子頁(yè)面的Array;切記,不然很難跟蹤問(wèn)題!
4.通用的方法
var ary = [1,23,4];
function isArray(o){
return Object.prototype.toString.call(o)=='[object Array]';
}
console.log(isArray(ary));
具體Object.prototype.toString 的用法,請(qǐng)參照 Object.prototype.toString的用法
好了關(guān)于JavaScript判斷變量是否為數(shù)組的方法(Array)就給大家介紹這么多,今天主要給大家總結(jié)了這四種,本文寫的不好還請(qǐng)各位大俠多多指教,謝謝!
- JS判斷數(shù)組里是否有重復(fù)元素的方法小結(jié)
- JS 判斷某變量是否為某數(shù)組中的一個(gè)值的3種方法(總結(jié))
- JavaScript判斷數(shù)組是否包含指定元素的方法
- JS判斷元素是否在數(shù)組內(nèi)的實(shí)現(xiàn)代碼
- JS判斷數(shù)組中是否有重復(fù)值得三種實(shí)用方法
- js判斷數(shù)據(jù)類型如判斷是否為數(shù)組是否為字符串等等
- js判斷數(shù)組是否包含某個(gè)字符串變量的實(shí)例
- js判斷是否為數(shù)組的函數(shù): isArray()
- JavaScript判斷數(shù)組重復(fù)內(nèi)容的兩種方法(推薦)
- JavaScript判斷數(shù)組的方法總結(jié)與推薦
相關(guān)文章
解決layui數(shù)據(jù)表格排序圖標(biāo)被超出的表頭擠出去的問(wèn)題
今天小編就為大家分享一篇解決layui數(shù)據(jù)表格排序圖標(biāo)被超出的表頭擠出去的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09
使用JavaScript觸發(fā)過(guò)渡效果的方法
hover 和 :focus 這樣的偽類,我們可以很方便的將元素從一個(gè)樣式切換到另一個(gè)樣式,而且切換是會(huì)有過(guò)渡效果。但有時(shí)我們想要使用 js 來(lái)驅(qū)動(dòng)過(guò)渡(即在代碼中觸發(fā)過(guò)渡)也是可以實(shí)現(xiàn)的,下面通過(guò)本文給大家介紹下2017-01-01
javascript獲取設(shè)置div的高度和寬度兼容任何瀏覽器
Javascript如何獲取和設(shè)置div的高度和寬度,并且兼容任何瀏覽器,感興趣的朋友不妨看看下面的代碼或許有意想不到的收獲2013-09-09
js鼠標(biāo)單擊和雙擊事件沖突問(wèn)題的快速解決方法
下面小編就為大家?guī)?lái)一篇js鼠標(biāo)單擊和雙擊事件沖突問(wèn)題的快速解決方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-07-07
通過(guò)V8源碼看一個(gè)關(guān)于JS數(shù)組排序的詭異問(wèn)題
一直在學(xué)習(xí)C++,也想閱讀點(diǎn)開源的C++項(xiàng)目,發(fā)現(xiàn)網(wǎng)上對(duì)Google V8評(píng)價(jià)不錯(cuò),于是上Github上找到了源代碼,但在學(xué)習(xí)中遇到一個(gè)js數(shù)組排序的問(wèn)題,下面這篇文章主要給大家介紹了通過(guò)V8源碼說(shuō)說(shuō)一個(gè)關(guān)于JS數(shù)組排序的詭異問(wèn)題的相關(guān)資料,需要的朋友可以參考下。2017-08-08
JS模擬自動(dòng)點(diǎn)擊的簡(jiǎn)單實(shí)例
這篇文章介紹了JS模擬自動(dòng)點(diǎn)擊的簡(jiǎn)單實(shí)例,有需要的朋友可以參考一下2013-08-08

