Array和Object的區別
區別:
陣列表示有序資料的集合,物件表示無序資料的集合。如果資料順序很重要的話,就用陣列,否則就用物件的好。
陣列的資料沒有名稱'name' 物件的資料有名稱 'name' 但是在很多程式語言中有個叫關聯陣列的,這種陣列中的資料是有名稱的。
從上面的語句可以看出陣列也是物件
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))
區分陣列和物件的方法
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)