function isEmptyObject(obj){
    for(var n in obj){return false} 
    return true; 

var a={"name":{},"phone":{}}
if(isEmptyObject(a.name)){alert("空对象")}
else{
  alert("不为空")
}

解决方案 »

  1.   

    function isEmptyObject(o){
        for(var n in o){        return false;
        }
        return true;
    }var a={"name":{},"phone":{}}
    if(isEmptyObject(a.name)){alert("yes")}
    else{
      alert("no")
    }//只针对你上面的情况
      

  2.   

    首先需要明确,你所谓空的object并不是空的,因为已经构造的对象占据内存空间,并且已经有了object类的成员,null才是空
    所以你那种判断方式显然是错误的你这种情况应该根据对象的成员来判断,比如name对象本来应该具备什么成员,但没有,你认为该对象为“空”
      

  3.   


    var c = a.name;
    var b = false;
    for(var p in c)
    {
     b =true;
    break;}
    if(b)
    {
    //你所谓的非空的时候
    }
    else
    {
    //所谓空的时候
    }
      

  4.   


    /* 
     * 检测对象是否是空对象(不包含任何可读属性)。 //如你上面的那个对象就是不含任何可读属性
     * 方法只既检测对象本身的属性,不检测从原型继承的属性。 
     */
    function isOwnEmpty(obj) 

        for(var name in obj) 
        { 
            if(obj.hasOwnProperty(name)) 
            { 
                return false; 
            } 
        } 
        return true; 
    }; /* 
     * 检测对象是否是空对象(不包含任何可读属性)。 
     * 方法既检测对象本身的属性,也检测从原型继承的属性(因此没有使hasOwnProperty)。 
     */
    function isEmpty(obj) 

        for (var name in obj)  
        { 
            return false; 
        } 
        return true; 
    }; 
    还有一点你要弄清楚:null, {}, undefined 这三都之间的差别..
      

  5.   

    补充一下,你在上面定义的那个对象并不是个空对象,只是对象里面的属性值为空,意思就是
    var a = {"name":{},"phone":{}}a.name这个属性是没有值,(name此时也是一个对象)..
      

  6.   

    和未知数说的一样,下面的函数只是检测,当你的对象不存在任何成员时,当它是空的
    PS:俺上午回了贴的,为什么看不到自己的回贴??????
    function isEmptyObject(obj){
        for(var n in obj){return false} 
        return true; 

    var a={"name":{},"phone":{}}
    if(isEmptyObject(a)){alert("空对象")}
    else{
      alert("不为空")
    }
      

  7.   

    你可以这样写if(null != a.name){...}else{...}
      

  8.   

    JSON.stringify(accounts) == "{}"