1.Object.keys()
function isEmptyObject(obj){return Object.keys(obj)===0
}
2.标题 for in
function isEmptyObject(obj){for(let key in obj){if(obj.hasOwnProperty(key))return false}return true
}
3.JSON.stringify
function isEmptyObject(obj){return JSON.stringify(obj) === '{}'
}
注意事项
null 和 undefined 不是对象:
如果输入值是 null 或 undefined,需要在判断前排除它们。
对象原型属性:
for…in 会遍历原型链上的可枚举属性,因此需要搭配 hasOwnProperty 使用。
性能:
Object.keys() 方法通常比 for…in 更高效,尤其是当对象的属性很多时。
WeakMap 和 WeakSet:
对于 WeakMap 或 WeakSet 等特殊对象,需要单独处理,因为它们不支持标准对象的操作
function isEmptyObject(obj) {return Object.keys(obj).length === 0 && obj.constructor === Object;
}