有时候通过AJAX方法调用返回的是一个JSON对象,而这个对象可能在开发过程中会没有数据是一个空{}。

JavaScript判断object/json 是否为空,可以使用jQuery的isEmptyObject()方法。

function isEmptyObject(obj) {   
  for (var key in obj){
    return false;//返回false,不为空对象
  }  
  return true;//返回true,为空对象
}
console.log(isEmptyObject({"re": 2})); //false
console.log(isEmptyObject({})); //true
console.log(isEmptyObject(null)); //true //注意参数为null时无语法错误哦,即虽然不能对null空指针对象添加属性,但可以使用for in 语句
console.log(isEmptyObject(23)); //true
console.log(isEmptyObject({"te": 2})); //false
以上是实现这个方法的简单原理,在 jQuery 中直接调用方法即可。
jQuery.isEmptyObject({}) // true
jQuery.isEmptyObject({ foo: "bar" }) // false
 

亦可以用JavaScript中的一个方法,Object.getPropertyNames()返回除原型属性以外的所有属性(包括不可枚举的属性)名组成的数组

因为他的返回值是一个数组,可以用返回值的length是否为0来判断

 function bools(){
if(Object.getOwnPropertyNames(msg.d).length ===0)return false;//返回false,为空对象
  return true;//返回true,不为空对象
}

console.log(bools({}));

检测对象是否是空对象(不包含任何可读属性)。

方法只既检测对象本身的属性,不检测从原型继承的属性。
 function isOwnEmpty(obj)
{
  for(var name in obj)
  {
    if(obj.hasOwnProperty(name))
    {
      return false;//返回false,不为空对象
    }
  }
  return true;//返回true,为空对象
};

 {} 与 null 的区别:

 var a = {};
var b = null; a.name = 'realwall';
b.name = 'jim'; //这里会报错,b为空指针对象,不能像普通对象一样直接添加属性。
b = a;
b.name = 'jim'; //此时 a 和 b 指向同一个对象。a.name, b.name 均为'jam'

javascript中怎么判断对象{}为空的更多相关文章

  1. 简述Js中,判断对象为空对象的几种方式

    1.空对象.空引用以及undefined三种概念的区别 空对象:是对象,但它的值是指向没有任何属性的对象的引用, {}是指 不含任何属性 的对象,当然对象属性包括 字面值和函数: 空引用:obj=nu ...

  2. Javascript学习1 - Javascript中的类型对象

    原文:Javascript学习1 - Javascript中的类型对象 1.1关于Numbers对象. 常用的方法:number.toString() 不用具体介绍,把数字转换为字符串,相应的还有一个 ...

  3. JavaScript中正则表达式判断匹配规则以及常用的方法

    JavaScript中正则表达式判断匹配规则以及常用的方法: 字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在. 正则表达式是一种用来匹配字符串的强有力的武器.它的设计思想 ...

  4. 【JavaScript】JavaScript中的ActiveXObject对象

    JavaScript中ActiveXObject对象是启用并返回 Automation 对象的引用.    使用方法: newObj = new ActiveXObject( servername.t ...

  5. 【跟着子迟品 underscore】JavaScript 中如何判断两个元素是否 "相同"

    Why underscore 最近开始看 underscore.js 源码,并将 underscore.js 源码解读 放在了我的 2016 计划中. 阅读一些著名框架类库的源码,就好像和一个个大师对 ...

  6. JavaScript中创建字典对象(dictionary)实例

    这篇文章主要介绍了JavaScript中创建字典对象(dictionary)实例,本文直接给出了实现的源码,并给出了使用示例,需要的朋友可以参考下 对于JavaScript来说,其自身的Array对象 ...

  7. JavaScript中如何判断两变量是否“相等”?

    1 为什么要判断? 可能有些同学看到这个标题就会产生疑惑,为什么我们要判断JavaScript中的两个变量是否相等,JavaScript不是已经提供了双等号“==”以及三等号“===”给我们使用了吗? ...

  8. javascript中如何获取对象名

    javascript中如何获取对象名 一.总结 一句话总结:将对象传入参数,看参数是否为函数(js中的对象和函数是一个意思么(函数肯定是对象)),对象参数.name属性即可获得 //版本4 funct ...

  9. javascript中怎么判断两个数据类型相等

    在 JavaScript 中,判断一个变量的类型尝尝会用 typeof 运算符,在使用 typeof 运算符时采用引用类型存储值会出现一个问题,无论引用的是什么类型的对象,它都返回 "obj ...

随机推荐

  1. ButterKnife 8.2.1 大圣归来

    零.前言 ButterKnife是一个视图注入的框架,主要帮我们解决无脑的findViewById.设置监听事件等等体力劳动. 一.引入 好消息是ButterKnife终于使用apt生成代码了,首先在 ...

  2. 又一个高性能轻量级的iOS模型框架YYModel

    前言 iOS的模型框架其实有很多了,去年研究过Mantle,也了解过JSONModel.MJExtension,最近的项目项目优化的时候,再次考虑,基于轻量级.高性能的考虑,最终选择了YYModel. ...

  3. js 随机生成姓名、手机号、身份证号、银行卡号

    开发测试的时候,经常需要填写姓名.手机号.身份证号.银行卡号,既要符合格式要求.又不能重复.大家会到网上搜各种生成器.能不能自己写一个简单的生成器呢.下面是随机生成姓名.手机号.身份证号.银行卡号的j ...

  4. C# CompareTo 和 String.Compare

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  5. Python基础2

    入门知识拾遗 一.作用域 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. if 1==1: name = 'yuxiaozheng' print name 外层变量,可以被 ...

  6. MySQL性能优化——索引

    原文地址:http://blog.codinglabs.org/articles/theory-of-mysql-index.html InnoDB使用B+Tree作为索引结构 最左前缀原理与相关优化 ...

  7. GIT/node使用

    一. 为不同域名的库自动保存不同的用户名和密码 比如 公司的库是 http://source.sohu.com,另一个是 http://www.github.com,命令行中分别两个命令就搞定了 gi ...

  8. 防火墙防DDOS攻击的简单设置

    #Ping洪水攻击(Ping of Death) iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s - ...

  9. Media Queries 详解

    Media Queries直译过来就是“媒体查询”,在我们平时的Web页面中head部分常看到这样的一段代码:  <link href="css/reset.css" rel ...

  10. WPF Prism

    简介   图解   参考 Using the Model-View-ViewModel Pattern