空的 JS 对象
Empty JS Object
有没有更好的方法来检查对象是否为空?我正在使用这个:
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;
}
请参阅对象是否为空?
相关文章:
- 使用JS将数组转换为json对象
- 查看JS对象的所有键,甚至是getter定义的键
- 在URL中传递JS对象
- 为什么要包装每一个原型“;类“;JS中具有匿名函数的对象
- 当属性不一致时,如何根据属性对JS对象列表进行排序
- Node.js中的JavaScript原型对象效率
- 如何使用自定义功能覆盖时间轴对象.js时间轴对象的_repaintMinorText
- 如何在第三轴上旋转 3D 对象.js
- 三个中是否有容器类型对象.js来转换一组子对象
- 从 JSON 对象 - JS 周围删除双引号
- 删除对象JS中的节点
- 在对象数组中搜索非空对象JS
- 按未定义的值从数组中选择对象?JS
- 递归循环,直到我们'重新处理对象[JS]
- 向窗口对象-js添加新属性时得到通知
- 如何包含对象/关联数组到对象(js)
- 加载依赖于页面的面向对象JS属性的最好方法是什么?
- 合并新的数组对象到现有的对象js
- 获取带有下划线的数组中的对象.js
- 在带有下划线的嵌套集合中查找对象.js