检查对象是否等于对象javascript

检查对象是否等于对象javascript,javascript,object,Javascript,Object,可能重复: 我想检查两个对象是否相同: 不起作用为什么???因为对象是通过引用进行比较的: var test = NaN; alert ( test == NaN ); // false alert ( test == test ); // false (!) 功能 对象(主机对象、本机对象/构造函数和实例) 一个常见的实例是{},它类似于新对象 以下对象类型按值进行比较,而不是按引用进行比较: var test = NaN; alert ( test == NaN ); // f

可能重复:

我想检查两个对象是否相同:


不起作用为什么???

因为对象是通过引用进行比较的:

var test = NaN;
alert ( test == NaN  ); // false
alert ( test == test ); // false (!)
  • 功能
  • 对象(主机对象、本机对象/构造函数和实例)
  • 一个常见的实例是
    {}
    ,它类似于
    新对象
以下对象类型按值进行比较,而不是按引用进行比较:

var test = NaN;
alert ( test == NaN  ); // false
alert ( test == test ); // false (!)
  • 数字
  • 布尔人
  • null
    未定义
此外,还有一个对象从不等于自身,甚至不通过引用:

var test = NaN;
alert ( test == NaN  ); // false
alert ( test == test ); // false (!)
要检查两个对象是否相等,必须定义相等:

  • “如果两个对象包含相同的属性名称和值,则它们是相等的”
    这意味着对象A必须具有与对象B相同数量的属性,并且A中的每个属性也必须是B的属性

试着用“==”而不是“==”来比较对象。

@user1194313,不,你的问题是“为什么这不起作用?”你甚至没有花时间正确写出。不付出任何努力就索取代码是不礼貌和不可接受的行为。如果你想要代码,就会有很多重复的问题。我发布了这个答案,因为你似乎想知道什么时候物体是相等的。我从未见过有人在回答这个问题时提到NaN,所以我想创建一个@user1194313如果您将此问题简化为“让我与codez比较对象”,我将投票以重复的方式结束此问题(无意冒犯)。@RobW我相信您指的是“价值”一词。术语“对象”在规范中已经定义为“对象类型的成员”。
5
被定义为一个值(数字类型)。@amnotiam的意思是数组、函数、正则表达式等都是对象。我不会使用这个定义,因为它在脱离上下文时是不明确的。我想我只是不确定调用它们对象是否有用,即使JavaScript会将它们转换为它们的对象类型。以这句话为例,“以下对象类型是按值比较的,而不是按引用比较的:*字符串…”考虑到这一点,以下内容似乎应该是正确的<代码>s1=新字符串(“foo”);s2=新字符串(“foo”);s1==s2…但它不是。似乎区别很重要。请花点时间阅读。我建议:
\uuq.isEqual(v1,v2)
。它甚至进行了深入的比较,但这并没有解决问题。问题是OP是在比较对象引用,而不是它们的实际值。我现在明白了。因此,为了比较对象..可以对对象进行每个值或类似(JSON.stringify)的比较?您需要做的是调用对象的内部
equals
函数,使对象相等。此方法的细节因对象而异。对于您定义的对象,您应该覆盖默认的
equals
compareTo
方法,以便它们适用于您的对象。