JavaScript 判斷物件為空的方法
阿新 • • 發佈:2018-12-24
文章目錄
1 背景
經常在express 框架中處理body引數等等操作,而有時經常沒有傳入某個物件引數,而程式裡又對該物件的屬性進行了操作,這就會導致比較嚴重的後果。沒有異常捕獲就會導致宕機,比如下列code:
let item = {
high:23,
width:32
}
let test = undefined;
console.info(item.high) ;
try{
console.info(test.high);
}catch(e){
console.info(e)
}
console.info("hello node");
把try catch語句去掉就會導致根本程式跑不到hello node語句。所以我們對物件屬性操作前對應該對物件是否為空進行判斷。
2 方法
Javascirpt 原生並沒有提供判斷物件是否為空的方法。經過查閱資料,在瀏覽器上 可以使用JQuery的方法進行判斷。但在node環境內需要自己實現方法進行判斷。
2.1 Jquery 的isEmptyObject
$.isEmptyObject ({})
true
$.isEmptyObject({foo:1})
False
2.2 node
我們可以看到Jquery isEmptyObject方法的實現:
function isEmptyObject(e) {
var t;
for (t in e)
return !1;
return !0
}
for…in迴圈遍歷物件自身的和繼承的可列舉屬性(但不含 Symbol 屬性)。
2.3 判斷物件屬性個數
經常在寫介面測試時,需要對返回物件進行check ,通過對上面for in 可以寫個方法來判斷物件成員個數
let checkObjectKeyNum = function(object, targetNum){
let objectPrototypeCount = 0;
for (let i in object){
objectPrototypeCount++;
}
return expect(objectPrototypeCount).to.be.equal(targetNum);
}