一、方法一:用到了原型
由於typeof檢測數組,只會顯示其為object,並不會詳細到告訴我們是否為array,所以我們可以自己寫個js用原型來檢測:
<script> /** * * @param obj 傳入需要驗證的對象 * @returns {boolean} */ function isArray(obj) { return Object.prototype.toString.call(obj) == "[object Array]"; } </script>
下面來創建幾個數組和非數組對象來驗證一下這個方法:
/*數字索引的數組*/
var arr =[1,2,3];
console.log(typeof arr);//object
console.log(isArray(arr));//true
/*非數字索引的數組*/
var newArr = [];
newArr['a'] = "sss";
newArr['b'] = 88;
console.log(typeof newArr);//object
console.log(isArray(newArr));//true
/*非數組的對象*/
var dateObj = new Date();
console.log(typeof dateObj);//object
console.log(isArray(dateObj));//false
二、方法二:用instanceof Array
依舊用上面定義的2個數組和1個時間對象來測試
//======用 instanceof Array 驗證 console.log(arr instanceof Array);//true console.log(newArr instanceof Array);//true console.log(dateObj instanceof Array);//false