在說明如何判斷乙個物件為陣列型別前,我們先鞏固下js的資料型別,js一共有六大資料型別:number、string、object、boolean、null、undefined。var str="string";
console.log(typeof str); //string
var num=1;
console.log(typeof num); //number
var bn=false;
console.log(typeof bn); //boolean
var a;
console.log(typeof a); //undfined
var obj = null;
console.log(typeof obj); //object
var doc = document;
console.log(typeof doc);//object
var arr = ;
console.log(arr); //object
var fn = function(){};
console.log(typeof fn); //function
除了前四個型別外,null、物件、陣列返回的都是object型別;對於函式型別返回的則是function,再比如typeof(date),typeof(eval)等。接下來進入正題,js判斷陣列型別的方法。
方法一: 使用instanceof方法
instanceof 用於判斷乙個變數是否某個物件的例項,左邊運算元是乙個物件,右邊運算元是乙個函式物件或者函式構造器。原理是通過判斷左運算元的物件的原型鏈上是否具有右運算元的建構函式的prototype屬性。
a instanceof b?alert("true"):alert("false") //注意b值是你想要判斷的那種資料型別,不是乙個字串,比如array。
舉乙個例子:
var arr=;
console.log(arr instanceof array) //返回true
方法二: 使用constructor方法
在w3c定義中的定義:constructor 屬性返回對建立此物件的陣列函式的引用,就是返回物件相對應的建構函式。從定義上來說跟instanceof不太一致,但效果都是一樣的。
那麼判斷各種型別的方法:
console.log(.constructor == array); //true
console.log({}.constructor == object); //true
console.log("string".constructor == string); //true
console.log((123).constructor == number); //true
console.log(true.constructor == boolean); //true
注意:使用instaceof和construcor,被判斷的array必須是在當前頁面宣告的!比如,乙個頁面(父頁面)有乙個框架,框架中引用了乙個頁面(子頁面),在子頁面中宣告了乙個array,並將其賦值給父頁面的乙個變數,這時判斷該變數,array ==object.constructor;會返回false;
原因:1、array屬於引用型資料,在傳遞過程中,僅僅是引用位址的傳遞。
2、每個頁面的array原生物件所引用的位址是不一樣的,在子頁面宣告的array,所對應的建構函式,是子頁面的array物件;父頁面來進行判斷,使用的array並不等於子頁面的array。
方法三: 使用object.prototype.tostring.call(arr) === '[object array]'方法
function isarray(o)
var arr=[2,5,6,8];
var obj=;
var fn = function () {}
console.log(isarray(arr)); //[object array]
console.log(isarray(obj)); //[object object]
console.log(isarray(fn)); //[object function]
方法四:es5定義了array.isarray:
array.isarray()
//true
參考:參考:
js如何判斷陣列是Array型別
在說明如何判斷乙個物件為陣列型別前,我們先鞏固下js的資料型別,js一共有六大資料型別 number string object boolean null undefined。var str string console.log typeof str string var num 1 console...
js中如何判斷arr是Array型別
今天筆試題碰到乙個問題是js中判斷是array型別 array屬於引用型別,是不能夠用typeof來判斷的,用來判斷的方法如下 1.用instanceof來判斷 var arr 1,2,3 arr instanceof array true2.constructor屬性 每個物件都有construc...
如何判斷乙個變數是陣列Array型別
var arr 1 2,3 console.log arr instanceof array truevar arr 1 2,3 console.log arr.constructor array truearray.isarray 1,2,3 true這個方法稍微繞了點彎,我們先看以下一下例子就明...