❌ 错误做法:
let obj = {}
obj == {} // false
✔ 正确做法:
const isObjEmpty = (obj) => !Reflect.ownKeys(obj).length && obj.constructor === Object;
注意:
- 数组也可以使用
Reflect.ownKeys
方法,所以需要判断类型
- 为什么不用
Object.keys()
?Object.keys
只能返回对象中可枚举的属性,Reflect.ownKeys
返回所有属性
var obj = {
a: 1,
b: 2
}
Object.defineProperty(obj, 'method', {
value: function () {
alert("Non enumerable property")
},
enumerable: false
})
console.log(Object.keys(obj))
// ["a", "b"]
console.log(Reflect.ownKeys(obj))
// ["a", "b", "method"]
发表回复