Today I had the need to check if an object was empty.
今天,我需要检查一个对象是否为空。
Since in JavaScript objects are compared by reference, we can’t do a simple comparison like this:
由于在JavaScript中对象是通过引用进行比较的,因此我们无法像这样进行简单的比较:
const obj = {}
if (obj === {}) {
//no
}
The solution is to pass the object to the built-in method Object.keys()
and to check if the object constructor is Object
:
解决方案是将对象传递给内置方法Object.keys()
并检查对象构造函数是否为Object
:
const obj = {}
Object.keys(obj).length === 0 && obj.constructor === Object
It’s important to add the second check, to avoid false positives.
添加第二项检查很重要,以避免误报。