有没有更好的方法来检查对象是否为空? 我正在使用这个:
function isObjEmpty(obj)
{
for (var p in obj) return false;
return true;
}
答案 0 :(得分:10)
如果您正在寻找单行,请考虑Object.keys
:
var isEmpty = !Object.keys(obj).length;
您当前的方法很危险,因为在Object.prototype
扩展后它总是会返回false:http://jsfiddle.net/Neppc/
答案 1 :(得分:2)
另一个选项内置于jQuery:jQuery.isEmptyObject(obj)
编辑:有趣的是,该实现与问题中的代码相同。
答案 2 :(得分:0)
实际上,这是检查对象是否为空的一种非常好的方法!对于exmpty对象,它比使用上面建议的Object.keys()快10倍:)
在Node,Chrom,Firefox和IE 9下测试,很明显,对于大多数用例:
明智的底线,使用:
function isEmpty(obj) {
for (var x in obj) { return false; }
return true;
}
或
function isEmpty(obj) {
for (var x in obj) { if (obj.hasOwnProperty(x)) return false; }
return true;
}
查看详细的测试结果和测试代码