js如何判斷一個對象{}是否爲空對象,沒有任何屬性
前段時間用js寫了一個類似"AngularJS"用於數據綁定的東西,功能是比較簡單了,
通常應該傳進來的是一個ArrayList JSON對象數組,
但有時候通過AJAX方法調用返回的是一個JSON對象,而不是數組!
爲了兼容這種情況使用了以下代碼:
-
if (typeof model.rows === "object" && !(model.rows instanceof Array)){
-
model.rows = [model.rows];
-
-
}
這段代碼在後來使用過程中發現了一個Bug,就是當
時,依然把它當作一個有效的對象來處理,進行數據綁定,可想而知,所有數據都是空的。
解決方案:
那麼怎麼解決這個問題呢?
第一習慣首先是搜索一下,但得到的結果都是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}));
-
-
console.log(isEmptyObject());
-
console.log(isEmptyObject({}));
-
console.log(isEmptyObject(null));
-
console.log(isEmptyObject(23));
-
console.log(isEmptyObject({"te": 2}));
結束語
jQuery的isEmptyObject()方法實現的代碼即簡單又簡潔,但最關鍵的是我們要理解原理。