toFrankie / blog

种一棵树,最好的时间是十年前。其次,是现在。
20 stars 1 forks source link

JavaScript 判断对象为空 #219

Open toFrankie opened 1 year ago

toFrankie commented 1 year ago

一、支持 Object.keys 情况下

这种方法有个不足的是,倘若通过 let emptyObj = Object.create(null) 创建空对象,那么 emptyObj.constructor === Object 就不成立了。

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)