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);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值