Javascript 中判断对象为空

最近写代码的时候碰到这个问题,需要检查一个对象(Object)是否为空,即不包含任何元素。Javascript 中的对象就是一个字典,其中包含了一系列的键值对(Key Value Pair)。检查一个对象是否为空,等价于检查对象中有没有键值对。写成代码,形如:

至于 isEmptyObject 的实现,jQuery 中有一个很有想法的方式,请看代码:

尽管 Javascript 没有原生提供 isEmpty() 方法,但它提供了迭代器,可以用来遍历所有的键值对。于是 jQuery 所做的事情,就是尝试遍历,如果有任何一个键值对,即说明对象非空,直接返回 false。从效率上来说,由于只读取了一个元素,顶多加上一些跳出循环的开销,实际性能不会比原生方法差太多。这是一个非常巧妙的实现。

注:有网友指出 ES5 中提供了 Object.getOwnPropertyNames 方法来获取所有的元素键。它的返回值是一个数组,当数组长度为零时,说明对象为空。


2 条评论 添加

  1. 前辈勿怪~,这个方法可能会有小问题,因为ES5以上允许用Object.defineProperty将Value定义为不可枚举对象,这样一来for..in没法遍历出来却又实实在在存在这个key,不过ES5里额外定义了Object.getOwnPropertyNames(obj)方法,它可以返回obj内所有属性的集合而且不会包含原型链上的属性。

发表评论

电子邮件地址不会被公开。 必填项已用*标注