首页 > 编程语言 >如何测试一个空的JavaScript对象?

如何测试一个空的JavaScript对象?

时间:2023-10-21 22:13:08浏览次数:59  
标签:JavaScript return 对象 Object isEmpty 测试 obj false true

内容来自 DOC https://q.houxu6.top/?s=如何测试一个空的JavaScript对象?

在AJAX请求之后,有时我的应用程序可能会返回一个空对象,例如:

var a = {};

我如何检查是否确实如此?


你可以使用带有Object.hasOwn(ECMA 2022+)测试的for…in循环来检查一个对象是否有任何自己的属性:

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

  return true;
}

如果你还需要区分类似于{}的空对象和其他没有自己属性的对象(例如Date),你可以进行各种(以及不幸的是特定于需求)类型检查:

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

  if (typeof value !== 'object') {
    // boolean、number、string、function等
    return false;
  }

  const proto = Object.getPrototypeOf(value);

  // 在`Map`支持之前,考虑使用`Object.create(null)`作为空对象和`{}`的安全映射
  // 如果原型不是`Object.prototype`,则返回false
  if (proto !== null && proto !== Object.prototype) {
    return false;
  }

  return isEmpty(value);
}

请注意,与这个例子中的比较一样,使用Object.keys(obj).length会失败,因为它创建了一个仅包含所有属性名称的数组,然后获取该数组的长度。迭代对象可以达到相同的目标,但复杂度为O(1)。

对于不支持ES 2022+的JavaScript引擎,可以将const替换为var并将Object.hasOwn替换为Object.prototype.hasOwnProperty.call

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

  return true;
}

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

jQuery:

jQuery.isEmptyObject({}); // true

lodash:

_.isEmpty({}); // true

Underscore:

_.isEmpty({}); // true

Hoek:

Hoek.deepEqual({}, {}); // true

ExtJS:

Ext.Object.isEmpty({}); // true

AngularJS (version 1):

angular.equals({}, {}); // true

Ramda:

R.isEmpty({}); // true

标签:JavaScript,return,对象,Object,isEmpty,测试,obj,false,true
From: https://www.cnblogs.com/xiaomandujia/p/17779636.html

相关文章

  • 实验2 类和对象
    实验任务3Complex.hpp#pragmaonce#include<iostream>#include<cmath>classComplex{public:Complex(doubler=0,doublei=0){real=r;imag=i;}Complex(constComplex&x){real=x.real......
  • win32汇编-条件测试语句
      MASM条件测试的基本表达式是:       ......
  • 性能测试学习笔记(五)
    一、操作系统监控数值项模块监控命令CPUlscpu、cpuinfo、top、atop、vmstat、mpstat、pidstat、Dstat、Nmon、sar、cpupower、irqbalanceMemorytop、atop、vmstat、pidstat、Dstat、Nmon、sar、free、smemI/Oiostat、iotop、pidstat、Dstat、Nmon、sarNetwork......
  • python技术栈之单元测试中mock的使用
    什么是mock?mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。mock的作用特别是开发过程中上下游未完成的工序导致当前无法测试,需要虚拟某些特定对象以便测试。unittest是python内置的单元测试库,在做接口测试时,如果......
  • 一文1000字彻底搞懂Web测试与App测试的区别
    总结分享一些项目需要结合Web测试和App测试的工作经验给大家:从功能测试区分,Web测试与App测试在测试用例设计和测试流程上没什么区别。而两者的主要区别体现在如下几个方面:1系统结构方面Web项目,B/S架构,基于浏览器的;Web测试过程中,客户端会随服务器端同步更新,所以只需更新服务器......
  • JavaScript 运算符
     算术运算符简表运算符描述例子x的运算结果y的运算结果在线实例(来源runoob.com)+加法x=y+275实例>>-减法x=y-235实例>>*乘法x=y*2105实例>>/除法x=y/22.55实例>>%取余数(模)x=y%215实例>>++ 自......
  • 试验2 类和对象——基础编程2
    任务31.代码complex.hpp:1#ifndefcomplex_H2#definecomplex_H34#include<iostream>5#include<cmath>6usingnamespacestd;78classComplex9{10public:11Complex(doublex=0,doubley=0):real{x},imag{y}{}12......
  • 短说PC端V3.1.0测试版发布|全新发布页、草稿箱、DIY门户首页新增页脚模块
    Hi大家好,我是给你们带来惊喜的运营小番茄。本期更新为短说PC端3.1.0测试版。此次V3.1.0版本带来的功能更新:①发布页全新设计;②草稿箱功能上线;③门户首页新增页脚模块。此外,优化了V3.0.1中的一些功能。一、新增功能01.PC端发布页全新设计保留原版动态类型内容支持快速发布的特点上,......
  • Monkey测试之ADB命令的安装与使用(安卓)
    一、ADB&Monkey介绍1.ADBADB全称为AndroidDebugBridge,起到调试桥的作用,是一个客户端-服务器端程序。其中客户端是用来操作的电脑,服务端是Android设备。ADB也是AndroidSDK中的一个工具,可以直接操作管理Android模拟器或者真实的Android设备。2.MonkeyMonkey是Androi......
  • 小程序底层技术机制解读 - JavaScript编程语言
    JavaScript是小程序的核心编程语言之一,它在小程序中起着至关重要的作用。本文将深入探讨JavaScript在小程序底层技术机制中的作用,以及如何利用JavaScript来构建小程序应用。同时,我们还将提供一个简单的代码演示,以帮助读者更好地理解JavaScript在小程序中的应用。JavaScript在小程序......