空的 JS 对象

Empty JS Object

本文关键字:对象 JS 空的      更新时间:2023-09-26

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

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下进行测试,很明显,对于大多数用例:

  • (为...在...是最快的使用选项!
  • 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;
}

请参阅对象是否为空?