1. 犀牛前端部落首页
  2. Javascript百科

Javascript中如何检测一个空对象

今天俺跟大家分享一下js中如何检测空对象,如var a = {}; 对象a即是一个空对象,因为它不含有任何属性。

Javascript实现方式

ES7实现方式

/**
 * 时间:2019年8月18日
 * 前端教程: https://www.pipipi.net/
 */
// 因为 Object.entries(new Date()).length === 0;
// 因此我们不得不多做一步检查=>obj.constructor ===Object
Object.entries(obj).length === 0 && obj.constructor === Object

ES5实现方式

/**
 * 时间:2019年8月18日
 * 前端教程: https://www.pipipi.net/
 */
// 因为 Object.entries(new Date()).length === 0;
// 因此我们不得不多做一些检查
Object.keys(obj).length === 0 && obj.constructor === Object

ES5之前实现方式

/**
 * 时间:2019年8月18日
 * 前端教程: https://www.pipipi.net/
 */
function isEmpty(obj) {
    for(var prop in obj) {
      if(obj.hasOwnProperty(prop)) {
        return false;
      }
    }
  
    return JSON.stringify(obj) === JSON.stringify({});
  }

框架实现方式

jQuery

/**
 * 时间:2019年8月18日
 * 前端教程: https://www.pipipi.net/
 */
jQuery.isEmptyObject({}); // true

loadsh

/**
 * 时间:2019年8月18日
 * 前端教程: https://www.pipipi.net/
 */
_.isEmpty({}); // true

Underscore

/**
 * 时间:2019年8月18日
 * 前端教程: https://www.pipipi.net/
 */
_.isEmpty({}); // true

Hoek

/**
 * 时间:2019年8月18日
 * 前端教程: https://www.pipipi.net/
 */
Hoek.deepEqual({}, {}); // true

ExtJS

/**
 * 时间:2019年8月18日
 * 前端教程: https://www.pipipi.net/
 */
Ext.Object.isEmpty({}); // true

AngularJS (version 1)

/**
 * 时间:2019年8月18日
 * 前端教程: https://www.pipipi.net/
 */
angular.equals({}, {}); // true

Ramda

R.isEmpty({}); // true

相关框架链接

jQuery.isEmptyObject()

_.isEmpty(value)

underscorejs

hoek

Ext

AngularJS

Ramda

 

原创文章,作者:犀牛前端部落,如若转载,请注明出处:https://www.pipipi.net/2242.html

发表评论

登录后才能评论