- instanceof
var a=[];
console.log(a instanceof Array) //輸出true
- 原型鏈方法constructor
var arr=[1,2,3]
console.log(arr.constructor==Array) //輸出為true
console.log(arr.__proto__.constructor==Array) //和上面一樣,輸出為true
注意:
(1) __proto__在低版本IE中是沒有定義的
(2)instanceof 和constructor 判斷的變量,必須在當前頁面聲明的,比如,一個頁面(父頁面)有一個框架,框架中引用了一個頁面(子頁面),在子頁面中聲明了一個array,并將其賦值給父頁面的一個變量,這時判斷該變量,Array == object.constructor;會返回false
原因:
(1) array屬于引用型數(shù)據(jù),在傳遞過程中,僅僅是引用地址的傳遞
(2) 每個頁面的Array原生對象所引用的地址是不一樣的,在子頁面聲明的array,所對應(yīng)的構(gòu)造函數(shù),是子頁面的Array對象;父頁面來進行判斷,使用的Array并不等于子頁面的Array
- 通用方法
var arr = [12,3,5]
function isArray(o){
return Object.prototype.toString.call(o)=='[object Array]';
}
console.log(isArray(arr)) //true
- ES5定義了方法Array.isArray()來判斷
Array.isArray([]); //true
比較新,有些瀏覽器不支持