Javascript琐事:检查空对象是否相等
可能是的副本。 愚蠢的javascript问题:我想检查一个对象是否是emtpy对象 我将空对象称为使用空对象文字产生的对象,如中所示:Javascript琐事:检查空对象是否相等,javascript,jquery,html,Javascript,Jquery,Html,可能是的副本。 愚蠢的javascript问题:我想检查一个对象是否是emtpy对象 我将空对象称为使用空对象文字产生的对象,如中所示: var o = {}; 正如预期的那样,=和==都不起作用,如下两条语句所示 alert({}=={}); alert({}==={}); 给假 不计算为空对象的表达式示例: 0 ” {a:b} [] newfunction(){} 那么,计算空对象的最短方法是什么呢?要确定对象是否为空,实际上没有一种简单的方法,Javascript会创建一个对
var o = {};
正如预期的那样,=
和==
都不起作用,如下两条语句所示
alert({}=={});
alert({}==={});
给假
不计算为空对象的表达式示例:
0
”
{a:b}
[]
newfunction(){}
那么,计算空对象的最短方法是什么呢?要确定对象是否为空,实际上没有一种简单的方法,Javascript会创建一个对象,并在内部自动添加对象的
构造函数和原型属性
function isEmpty(o){
for(var i in o){
if(o.hasOwnProperty(i)){
return false;
}
}
return true;
}
您可以创建自己的isEmpty()
方法,如下所示:
var obj={}
Object.prototype.isEmpty = function() {
for (var prop in this) {
if (this.hasOwnProperty(prop)) return false;
}
return true;
};
alert(obj.isEmpty());
因此,如果任何对象具有任何属性,则该对象不是空的,否则返回true。您可以使用此语法
if (a.toSource() === "({})")
但这在IE中不起作用。作为ajax库的“toSource()”方法编码为JSON的替代方法,可以使用:
比如说,
var o = {};
alert($.toJSON(o)=='{}'); // true
var o = {a:1};
alert($.toJSON(o)=='{}'); // false
jquery+jquery.json
javascript:
cs = 'MTobj={ }; JSON.stringify(MTobj)=="{}"';
alert(cs+' is '+eval(cs));
cs = 'MTnot={a:2}; JSON.stringify(MTnot)=="{}"';
alert(cs+' is '+eval(cs));
说
警告!当心!可能会有误报
javascript:
cs = 'MTobj={ f:function(){} }; JSON.stringify(MTobj)=="{}"';
alert(cs+' is '+eval(cs));
alert("The answer is wrong!!\n\n"+
(cs="JSON.stringify({ f:function(){} })")+
"\n\n returns\n\n"+eval(cs));
您还可以使用测试对象是否为“空”:
一个有趣的问题。在我选择的搜索引擎中快速点击一下,就会发现其实并不那么容易!这个帖子可能会有点帮助。tho:这能回答你的问题吗?这是正确的答案。对于需要在IE8上使用此功能的用户,请检查es5垫片库。这比(For…in)选项慢10倍-请参阅这是非常不安全和缓慢的,没有充分的理由不安全和缓慢。
javascript:
cs = 'MTobj={ f:function(){} }; JSON.stringify(MTobj)=="{}"';
alert(cs+' is '+eval(cs));
alert("The answer is wrong!!\n\n"+
(cs="JSON.stringify({ f:function(){} })")+
"\n\n returns\n\n"+eval(cs));
if (Object.keys(obj).length === 0) {
// "empty" object
} else {
// not empty
}