前言
很多时候会遇到空对象{}
的情况,怎么样才能够很好的判断呢
前置条件
现在有三个对象
编写方法
现在我们用不同的方法来判断
Function 1
我们可以使用JSON.stringify(obj)
Function 2
我们可以利用ES6
中的 Object.keys()
Function 3
我们可以利用for in
来遍历对象
Function 4
我们可以利用Object.getOwnPropertyNames()
校验
分析
首先obj
和obj1
各个函数都是准确的判断了
唯一的区别就是obj2
的判断
那么obj1
和obj2
有什么区别呢,我只是将 obj2
的属性变成了不可枚举的因此出现了差异化
所以我们也可以推断出前面三个JSON.stringify
Object.keys()
for in
都只能遍历对象的可枚举的属性
如果不可枚举是无法遍历的,因此对于他们来说,就是个空对象
但是Object.getOwnPropertyNames()
可以便利对象上的不可枚举属性,所以能够准确的判断出该对象并不是空
注意,在obj2
中虽然是不可枚举的,但是依旧是可以访问的
写在后面
其实大部分时候我们可以通过Object.keys()
来判断是否为空,但是可能有些情况比较特殊,所以多学一点方法还是很OK
的