1. 程式人生 > >Array和Object的區別

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)