1. 程式人生 > >JavaScript 判斷物件為空的方法

JavaScript 判斷物件為空的方法

文章目錄

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); }