有没有更好的方法来检查对象是否为空?我正在使用这个:
function isObjEmpty(obj)
{
for (var p in obj) return false;
return true;
}
有没有更好的方法来检查对象是否为空?我正在使用这个:
function isObjEmpty(obj)
{
for (var p in obj) return false;
return true;
}
如果您正在寻找单线,请考虑Object.keys
:
var isEmpty = !Object.keys(obj).length;
您当前的方法很危险,因为它Object.prototype
在扩展时总是会返回 false:http: //jsfiddle.net/Neppc/
另一个选项内置在jQuery中:jQuery.isEmptyObject(obj)
编辑:有趣的是,该实现与问题中的代码相同。
实际上这是检查对象是否为空的好方法!对于 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;
}
查看详细的测试结果和测试代码,对象是否为空?