日期:2014-05-16 浏览次数:20402 次
var a={"name":{},"phone":{}} if(a.name){alert("yes")} else{ alert("no") }
function isEmptyObject(obj){ for(var n in obj){return false} return true; } var a={"name":{},"phone":{}} if(isEmptyObject(a.name)){alert("空对象")} else{ alert("不为空") }
------解决方案--------------------
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")
}
//只针对你上面的情况
------解决方案--------------------
首先需要明确,你所谓空的object并不是空的,因为已经构造的对象占据内存空间,并且已经有了object类的成员,null才是空
所以你那种判断方式显然是错误的
你这种情况应该根据对象的成员来判断,比如name对象本来应该具备什么成员,但没有,你认为该对象为“空”
------解决方案--------------------
发的贴又看不见了??
------解决方案--------------------
var c = a.name; var b = false; for(var p in c) { b =true; break; } if(b) { //你所谓的非空的时候 } else { //所谓空的时候 }
------解决方案--------------------
/* * 检测对象是否是空对象(不包含任何可读属性)。 //如你上面的那个对象就是不含任何可读属性 * 方法只既检测对象本身的属性,不检测从原型继承的属性。 */ 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; };
------解决方案--------------------
补充一下,你在上面定义的那个对象并不是个空对象,只是对象里面的属性值为空,意思就是
var a = {"name":{},"phone":{}}
a.name这个属性是没有值,(name此时也是一个对象)..
------解决方案--------------------