Javascript 中判断空对象

简介:在 JavaScript 判断字符串是否是一个空字符串 可以 !"" 返回 true 来判断, 要是判断 {} 是否是空对象,也用 !{} 来判断的 得到的结果是 false, !{name: ''} 的返回结果也是 false。那么这肯定是无法判断了。那么在JavaScript 中与没有其他方法可以来判断呢?让我们看看下面的方法。

  • 首先我们先定义两个对象,一个没有属性,一个存在属性
var obj = {}
var obj2 = {name: '123'}

方法一 JSON.stringify()


function isEmptyObject(obj) {
return JSON.stringify(obj) === '{}'
} console.log(isEmptyObject(obj)) // true
console.log(isEmptyObject(obj2)) // false

方法二 Object.getOwnPropertyNames()

  • getOwnPropertyNames() 方法会获取对象中的属性名,存到一个数组中返回。
  • 我们可以通过判断数组长度是否为 0 来判断

function isEmptyObject(obj) {
return Object.getOwnPropertyNames(obj).length === 0
} console.log(isEmptyObject(obj)) // true
console.log(isEmptyObject(obj2)) // false

方法三 Object.keys()

  • keys() 方法是ES6 中新增方法,作用和 getOwnPropertyNames() 形同。也会返回一个存储属性名的一个数组

function isEmptyObject(obj) {
return Object.keys(obj).length === 0
} console.log(isEmptyObject(obj)) // true
console.log(isEmptyObject(obj2)) // false

方法四 forin

  • 通过forin 方法判断是否存在 属性,存在放回 false 不存在 返回true

function isEmptyObject(obj) {
for (var key in obj) {
return false;
}
return true;
} console.log(isEmptyObject(obj)) // true
console.log(isEmptyObject(obj2)) // false

方法五 Reflect.ownKeys()

  • Reflect.ownKeys() 也是返回一个数组,可以 解决 Symbol() 作为 key 时的尴尬
var symbal = Symbal();
var bb = {};
bb[symbal] = 'Symbal';
function isEmptyObject(obj) {
return Reflect.ownKeys(obj).lenght === 0;
} console.log(isEmptyObject(obj)) // true
console.log(isEmptyObject(obj2)) // false
console.log(isEmptyObject(bb)) // false Reflect.ownKeys(bb) 返回 [Symbol()]

JavaScript 中判断 {}是空对象的更多相关文章

  1. Java中判断非空对象.

    Java中经常会遇到判断非空的时候. 有的时候判断了非空但是还是报空指针,为什么.? 判断的时候一般都会判断两次.类似于: Org o = new Org(); if ( o.getId()!=nul ...

  2. JavaScript中判断对象是否属于Array类型的4种方法及其背后的原理与局限性

    前言 毫无疑问,Array.isArray是现如今JavaScript中判断对象是否属于Array类型的首选,但是我认为了解本文其余的方法及其背后的原理与局限性也是很有必要的,因为在JavaScrip ...

  3. JavaScript中判断为整数的多种方式

    之前记录过JavaScript中判断为数字类型的多种方式,这篇看看如何判断为整数类型(Integer). JavaScript中不区分整数和浮点数,所有数字内部都采用64位浮点格式表示,和Java的d ...

  4. JavaScript中判断变量类型最简洁的实现方法以及自动类型转换(#################################)

    这篇文章主要介绍了JavaScript中判断整字类型最简洁的实现方法,本文给出多个判断整数的方法,最后总结出一个最短.最简洁的实现方法,需要的朋友可以参考下 我们知道JavaScript提供了type ...

  5. Javascript中判断数组的正确姿势

    在 Javascript 中,如何判断一个变量是否是数组? 最好的方式是用 ES5 提供的 Array.isArray() 方法(毕竟原生的才是最屌的): var a = [0, 1, 2]; con ...

  6. javascript中的内置对象

    2015.12.1 javascript中的内置对象 复习: 1.js中的内置函数 alert prompt write parseInt parseFloat eval isNaN document ...

  7. (转载)JavaScript中的Window窗口对象

    (转载)http://www.ijavascript.cn/jiaocheng/javascript-window-65.html 例子: <html> <head> < ...

  8. Java与JavaScript中判断两字符串是否相等的区别

    JavaScript是一种常用的脚本语言,这也决定了其相对于其他编程语言显得并不是很规范.在JavaScript中判断两字符串是否相等 直接用==,这与C++里的String类一样.而Java里的等号 ...

  9. javascript中遇到的字符串对象处理

    在javascript中对参数处理: 1 <script> 2 function getParam() 3 { 4 urlInfo=window.location.href; //获取当前 ...

  10. JavaScript中判断整字类型最简洁的实现方法

    这篇文章主要介绍了JavaScript中判断整字类型最简洁的实现方法,本文给出多个判断整数的方法,最后总结出一个最短.最简洁的实现方法,需要的朋友可以参考下 我们知道JavaScript提供了type ...

随机推荐

  1. 春色满园关不住,带你体验阿里云 Knative

    简介: Knative 是基于 Kubernetes 的开源 Serverless 应用编排框架.阿里云 Knative 在社区Knative基础之上,与阿里云产品进行了深度的融合,给你带来最纯粹的容 ...

  2. 简单、有效、全面的Kubernetes监控方案

    ​简介:近年来,Kubernetes作为众多公司云原生改造的首选容器化编排平台,越来越多的开发和运维工作都围绕Kubernetes展开,保证Kubernetes的稳定性和可用性是最基础的需求,而这其中 ...

  3. Roslyn 分析器 EnforceExtendedAnalyzerRules 属性的作用

    在开始编写 dotnet 的 Roslyn 分析器项目时,会被 VisualStudio 通过 RS1036 要求在项目文件配置上 EnforceExtendedAnalyzerRules 属性,本文 ...

  4. 迁移 dotnet 6 提示必须将目标平台设置为 Windows 平台

    我在迁移一个古老的项目为 .NET 6 框架,但是 VS 提示 error NETSDK1136 如果使用 Windows 窗体或 WPF,或者引用使用 Windows 窗体或 WPF 的项目或包,则 ...

  5. NoSQL 数据库管理工具,搭载强大支持:Redis、Memcached、SSDB、LevelDB、RocksDB,为您的数据存储提供无与伦比的灵活性与性能!

    NoSQL 数据库管理工具,搭载强大支持:Redis.Memcached.SSDB.LevelDB.RocksDB,为您的数据存储提供无与伦比的灵活性与性能! [官网地址]:http://www.re ...

  6. 3. ETCD数据备份与恢复

    首先为运行在https://127.0.0.1:2379 上的现有etcd实例创建快照并将快照保存到 /srv/data/etcd-snapshot.db. 注:为给定实例创建快照预计能在几秒钟内完成 ...

  7. SQL Server实战三:数据库表完整性约束及索引、视图的创建、编辑与删除

      本文介绍基于Microsoft SQL Server软件,实现数据库表完整性约束.索引与视图的创建.编辑与删除等操作的方法. 目录 1 交互式为数据库表S创建PRIMARY KEY约束 2 交互式 ...

  8. Competition Set - 2023杭电多校

    关于代码太多导致太卡然后发现刚好可以放下HDU多校这回事. 那就稍微加点经历吧.team316. 第十场 今天发挥还行. 上来开03,一发过.然后做09,感觉就不难,过之.发现11是数学题,干,想了2 ...

  9. 13、web 中间件加固-Nginx 加固

    1.隐藏版本信息 避免被针对版本直接使用漏洞 修改 nginx.conf 文件 在 http 模块中添加信息:server_tokens off; 2.限制目录权限 某些目录为运维页面,不要公开访问 ...

  10. Docker基础 ubuntu安装docker

    目录 如何在Linux深度系统deepin下安装docker 介绍 安装docker 在ubuntu的docker中运行ubuntu 在ubuntu的docker中运行centos 卸载docker ...