首页 >web前端 >js教程 >如何有效测试空 JavaScript 对象?

如何有效测试空 JavaScript 对象?

DDD
DDD原创
2024-12-21 16:37:10794浏览

How Can I Effectively Test for Empty JavaScript Objects?

测试空 JavaScript 对象

处理 AJAX 响应时,经常会遇到空对象,例如 var a = {};。确定对象是否为空对于各种应用程序任务至关重要。

Object.hasOwn() 和 for...in 循环:

对于 ECMAScript 2022 环境, Object.hasOwn() 方法可以与 for...in 循环结合使用来检查是否为空对象:

function isEmpty(obj) {
  for (const prop in obj) {
    if (Object.hasOwn(obj, prop)) {
      return false;
    }
  }

  return true;
}

该方法会遍历对象自身的所有属性,如果找到任何属性,则表明该对象非空对象。

区分空对象和对象没有自己的属性:

如果您需要区分类似 {} 的空对象和没有自己的属性(例如日期)的对象,可以执行额外的类型检查:

function isEmptyObject(value) {
  if (value == null) {
    return false; // null or undefined
  }

  if (typeof value !== 'object') {
    return false; // boolean, number, string, etc.
  }

  const proto = Object.getPrototypeOf(value);
  if (proto !== null && proto !== Object.prototype) {
    return false; // consider 'Object.create(null)'
  }

  return isEmpty(value);
}

替代方法:

如果您无权访问ES 2022 功能,您可以使用旧版 Object.prototype.hasOwnProperty.call()方法:

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

  return true;
}

流行的库函数:

许多流行的库还提供了检查空对象的函数:

  • jQuery: $.isEmptyObject({})
  • lodash: _.isEmpty({})
  • 下划线:_.isEmpty({})
  • Hoek:Hoek.deepEqual({}, {})
  • ExtJS:扩展。 Object.isEmpty({})
  • AngularJS(版本 1): angular.equals({}, {})
  • Ramda: R.isEmpty({})

以上是如何有效测试空 JavaScript 对象?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn