一、支持 Object.keys 情况下
- 排除
undefined
、null
等报错 - 判断是否含
key
- 通过构造函数排除包装类,如
new String()
、new Boolean()
等情况
function isEmptyObject(val) {
return val && Object.keys(val).length === 0 && val.constructor === Object
}
二、不支持 Object.keys 时
function isEmptyObject(val) {
return Object.prototype.toString.call(val) === '[object Object]' && JSON.stringify(val) === '{}'
}
三、使用第三方 JS 库
// Lodash
_.isEmpty(val)
// Underscore
_.isEmpty(val)
// jQuery
$.isEmptyObject(val)