js判斷數(shù)據(jù)是否為數(shù)組類型

  1. instanceof
var a=[];
console.log(a instanceof Array)  //輸出true
  1. 原型鏈方法constructor
var arr=[1,2,3]
console.log(arr.constructor==Array)  //輸出為true
console.log(arr.__proto__.constructor==Array)  //和上面一樣,輸出為true

注意:
(1) __proto__在低版本IE中是沒有定義的
(2)instanceofconstructor 判斷的變量,必須在當前頁面聲明的,比如,一個頁面(父頁面)有一個框架,框架中引用了一個頁面(子頁面),在子頁面中聲明了一個array,并將其賦值給父頁面的一個變量,這時判斷該變量,Array == object.constructor;會返回false
原因:
(1) array屬于引用型數(shù)據(jù),在傳遞過程中,僅僅是引用地址的傳遞
(2) 每個頁面的Array原生對象所引用的地址是不一樣的,在子頁面聲明的array,所對應(yīng)的構(gòu)造函數(shù),是子頁面的Array對象;父頁面來進行判斷,使用的Array并不等于子頁面的Array

  1. 通用方法
var arr = [12,3,5]
function isArray(o){
    return Object.prototype.toString.call(o)=='[object Array]';
}
console.log(isArray(arr))  //true
  1. ES5定義了方法Array.isArray()來判斷
Array.isArray([]);     //true

比較新,有些瀏覽器不支持

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容