当前位置: 首页 > news >正文

JS判断对象是否为空的方法

在 JavaScript 中,判断一个对象是否为空对象(即没有自身可枚举属性),可以通过以下方法实现:

方法 1:使用 Object.keys()

javascript

function isEmptyObject(obj) {
  // 确保是普通对象(排除 null、数组和其他对象类型)
  return Object.prototype.toString.call(obj) === '[object Object]' && 
    Object.keys(obj).length === 0;
}

方法 2:使用 for...in 循环

javascript

function isEmptyObject(obj) {
  if (Object.prototype.toString.call(obj) !== '[object Object]') {
    return false;
  }
  for (let key in obj) {
    if (obj.hasOwnProperty(key)) {
      return false;
    }
  }
  return true;
}

方法 3:使用 JSON.stringify()

javascript

function isEmptyObject(obj) {
  try {
    return Object.prototype.toString.call(obj) === '[object Object]' && 
      JSON.stringify(obj) === '{}';
  } catch (e) {
    return false; // 处理循环引用异常
  }
}

说明:

  1. 类型检查
    使用 Object.prototype.toString.call(obj) === '[object Object]' 确保目标是一个普通对象(如 {} 或 new Object()),排除数组、null、日期等特殊对象类型。

  2. 检查属性

    • Object.keys(obj).length === 0:仅检查对象自身的可枚举属性。

    • for...in + hasOwnProperty:遍历对象自身属性,避免原型链干扰。

    • JSON.stringify():将对象转换为字符串判断,但无法处理不可枚举属性和循环引用。

  3. 边界情况

    • 若对象只有 Symbol 属性或不可枚举属性,上述方法可能返回 true(需用 Reflect.ownKeys() 检测所有属性)。

    • 非对象类型(如 null、数字)直接返回 false


使用示例:

javascript

isEmptyObject({});          // true
isEmptyObject({ a: 1 });    // false
isEmptyObject([]);          // false
isEmptyObject(null);        // false
isEmptyObject(Object.create(null)); // true
isEmptyObject(new Date());  // false

根据实际需求选择合适的方法,通常推荐 方法 1 或 方法 2

相关文章:

  • 移动端六大语言速记:第4部分 - 数据结构
  • Linux环境下Ollama升级及Gemma3模型部署指南
  • 突发,国行 iPhone 17,支持 eSIM
  • C# 事件(Event)
  • 【Linux】Linux 系统启动流程详解
  • 深入理解 POSIX 线程 (pthread):从基础到高级应用
  • 3-栈、队列、数组
  • AIGC(生成式AI)试用 29 -- 用AI写读书笔记
  • 【 Vue 2 中的 Mixins 模式】
  • AI换脸工具--FaceFusion 整合包
  • 13 配置Hadoop集群-测试使用
  • harmony OS NEXT-沉浸式布局实现笔记
  • CSS层叠顺序
  • 算法竞赛备赛——【数据结构】并查集
  • Hexo + Fluid博客实现自定义图标
  • Verilog HDL 100道面试题及参考答案
  • 目前市场上,好用的校招系统是哪个?
  • 我与数学建模之启程
  • C/C++网络编程【1】----- 大纲
  • 【深度视觉】第十八章:YOLO系列1
  • 南山商城网站建设找哪家公司比较安全/seo软文是什么意思
  • 精准客户软件/seo发外链工具
  • 政府网站开发 扬州/网络广告的发布方式包括
  • 公司网站建设 阜阳/哪有恶意点击软件买的
  • 网站服务器在哪里买好/西安百度
  • 台州网站建设方案/制作网站需要的技术与软件