空JS对象

时间:2012-05-07 13:34:36

标签: javascript json

有没有更好的方法来检查对象是否为空? 我正在使用这个:

function isObjEmpty(obj)
{
    for (var p in obj) return false;
    return true;
}

3 个答案:

答案 0 :(得分:10)

如果您正在寻找单行,请考虑Object.keys

var isEmpty = !Object.keys(obj).length;

您当前的方法很危险,因为在Object.prototype扩展后它总是会返回false:http://jsfiddle.net/Neppc/

答案 1 :(得分:2)

另一个选项内置于jQueryjQuery.isEmptyObject(obj)

编辑:有趣的是,该实现与问题中的代码相同。

答案 2 :(得分:0)

实际上,这是检查对象是否为空的一种非常好的方法!对于exmpty对象,它比使用上面建议的Object.keys()快10倍:)

在Node,Chrom,Firefox和IE 9下测试,很明显,对于大多数用例:

  • (for ... in ...)是最快的选择!
  • Object.keys(obj)。length对于空对象慢10倍
  • JSON.stringify(obj)。length总是最慢的(并不令人惊讶)
  • Object.getOwnPropertyNames(obj)。length比Object.keys(obj)更长。在某些系统上,.length 可能会更长。

明智的底线,使用:

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

Is object empty?

查看详细的测试结果和测试代码