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