1. 程式人生 > >JS中的array和Object的區別

JS中的array和Object的區別

區別:

陣列表示有序資料的集合,物件表示無需資料的集合。如果資料順序很重要的話,就用陣列,否則就用物件的好。

陣列的資料沒有名稱'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))