js如何判斷一個對象{}是否為空對象,沒有任何屬性

js如何判斷一個對象{}是否為空對象,沒有任何屬性

前段時間用js寫瞭一個類似"AngularJS"用於數據綁定的東西,功能是比較簡單瞭,

通常應該傳進來的是一個ArrayList JSON對象數組,

但有時候通過AJAX方法調用返回的是一個JSON對象,而不是數組!

為瞭兼容這種情況使用瞭以下代碼:

if (typeof model.rows === "object" && !(model.rows instanceof Array)){  
    model.rows = [model.rows];  
  
}

這段代碼在後來使用過程中發現瞭一個Bug,就是當

model.rows = {}; 

時,依然把它當作一個有效的對象來處理,進行數據綁定,可想而知,所有數據都是空的。

解決方案:

那麼怎麼解決這個問題呢?

第一習慣首先是搜索一下,但得到的結果都是DOM相關的,差強人意!

這時想起之前寫過遍歷JS對象屬性的方法,這裡可以用上瞭!

代碼如下:

if (typeof model.rows === "object" && !(model.rows instanceof Array)){  
    var hasProp = false;  
    for (var prop in model.rows){  
        hasProp = true;  
        break;  
    }  
    if (hasProp){  
        model.rows = [model.rows];  
    }else{  
        throw "model.rows is empty object";  
        return false;  
    }  
}

代碼很簡單,就不寫註釋瞭。

jQuery中的實現方法

JavaScript判斷object/json 是否為空,可以使用jQuery的isEmptyObject()方法。

此方法如下

function isEmptyObject(e) {  
    var t;  
    for (t in e)  
        return !1;  
    return !0  
}

調用

console.log($.isEmptyObject({"re": 2}));    //false  
   
console.log(isEmptyObject());           //true  
console.log(isEmptyObject({}));         //true  
console.log(isEmptyObject(null));       //true  
console.log(isEmptyObject(23));         //true  
console.log(isEmptyObject({"te": 2}));      //false 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *