JS中的array和Object的區別
阿新 • • 發佈:2018-12-14
區別:
陣列表示有序資料的集合,物件表示無需資料的集合。如果資料順序很重要的話,就用陣列,否則就用物件的好。
陣列的資料沒有名稱'name' 物件的資料有名稱 'name' 但是在很多程式語言中有個叫關聯陣列的,這種陣列中的資料是有名稱的。
如何區分array和object:
1:通過isarray方法
使用方法: Array.isArray(obj); //obj是檢測的物件
2:通過instanceof運算子來判斷
instanceof運算子左邊是子物件(待測物件),右邊是父建構函式(這裡是Array),
具體程式碼:
var obj = {"k1":"v1"}; var arr = [1,2]; console.log("物件的結果:"+(obj instanceof Array)); console.log("陣列的結果:"+(arr instanceof Array));
3::使用isPrototypeOf()函式
原理:檢測一個物件是否是Array的原型(或處於原型鏈中,不但可檢測直接父物件,還可檢測整個原型鏈上的所有父物件)
使用方法: parent.isPrototypeOf(child)來檢測parent是否為child的原型;
isPrototypeOf()函式實現的功能和instancof運算子非常類似;
具體程式碼:
Array.prototype.isPrototypeOf(arr)//true表示是陣列,false不是陣列
4:利用建構函式constructor
具體程式碼:
var obj = {"k1":"v1"}; var arr = [1,2]; console.log(obj.constructor == Array) console.log(arr.constructor == Array)
5:使用typeof(物件)+型別名結合判斷:
具體程式碼:
function isArrayFour(arr) { if(typeof(arr) === "object") { if(arr.concat) { return 'This is Array' }else { return 'This not Array' } } } console.log(typeof(obj)) console.log(typeof(arr)) console.log(isArrayFour(obj)) console.log(isArrayFour(arr))