在 JavaScript 开发过程中,不可避免的一项操作就是检查对象是否为空,而 JavaScript 官方并没有提供标准函数,本文就介绍一下在不同的情况下使用 JavaScript 检查对象是否为空的方法。

对于现代浏览器,您可以使用原生 JS 语句或“Object.keys”,对于较旧的浏览器支持,您可以使用第三方库,比如安装 Lodash 库并使用他们的“isEmpty”方法。

const empty = {};

/* -------------------------
 对于现代浏览器使用最新的 JS 原生方法
----------------------------*/
Object.keys(empty).length === 0 && empty.constructor === Object
// true

/* -------------------------
  使用 Lodash 库的 isEmpty 方法(兼容旧版本浏览器)
----------------------------*/
_.isEmpty(empty)
// true

A. 现代浏览器中的空对象检查

在现代浏览器中,我们可以使用内置Object.keys方法来检查空对象。

const empty = {};

Object.keys(empty).length === 0 && empty.constructor === Object;

B. 旧浏览器中的空对象检查

对于旧版本浏览器,我们仍然可以选择使用原生 js 代码检查,也可以使用第三方库。

B.1 在旧版本浏览器中使用原生 js 代码检查空对象

function isObjectEmpty(value) {
  return (
    Object.prototype.toString.call(value) === '[object Object]' &&
    JSON.stringify(value) === '{}'
  );
}
isObjectEmpty({});           // true ✅
isObjectEmpty(new Object()); // true ✅

B.2 在旧版本浏览器中使用第三方库检查空对象

Lodash (IE11)

_.isEmpty({});
// true

jQuery (IE9+)

jQuery.isEmptyObject({});
// true