Javascript琐事:检查空对象是否相等

Javascript琐事:检查空对象是否相等,javascript,jquery,html,Javascript,Jquery,Html,可能是的副本。 愚蠢的javascript问题:我想检查一个对象是否是emtpy对象 我将空对象称为使用空对象文字产生的对象,如中所示: var o = {}; 正如预期的那样,=和==都不起作用,如下两条语句所示 alert({}=={}); alert({}==={}); 给假 不计算为空对象的表达式示例: 0 ” {a:b} [] newfunction(){} 那么,计算空对象的最短方法是什么呢?要确定对象是否为空,实际上没有一种简单的方法,Javascript会创建一个对

可能是的副本。

愚蠢的javascript问题:我想检查一个对象是否是emtpy对象

我将空对象称为使用空对象文字产生的对象,如中所示:

 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
}