javascript中怎么判断对象{}为空

时间:2023-03-09 16:06:46
javascript中怎么判断对象{}为空

有时候通过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'