如何检查JavaScript对象是否为空?

问题描述

有时,我们需要检查一个对象是否为空,比如:

var a = {};

那么,如何确定其为空对象呢?

解决方案

ES7+

// 因为 Object.entries(new Date()).length === 0;
// 所以,我们额外检查对象的构造函数
Object.entries(obj).length === 0 && obj.constructor === Object

ES5+

Object.keys(obj).length === 0 && obj.constructor === Object

ES5之前的解决办法

function isEmpty(obj) {
  for(var prop in obj) {
    if(obj.hasOwnProperty(prop)) {
      return false;
    }
  }

  return JSON.stringify(obj) === JSON.stringify({});
}
用户头像
登录后发表评论