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


原文地址:

http://blog.csdn.net/testcs_dn/article/details/40431835

 

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  

結束語

jquery的isEmptyObject()方法實現的代碼即簡單又簡潔,但最關鍵的是我們要理解原理。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM