检查对象是否等于对象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的属性
5
被定义为一个值(数字类型)。@amnotiam的意思是数组、函数、正则表达式等都是对象。我不会使用这个定义,因为它在脱离上下文时是不明确的。我想我只是不确定调用它们对象是否有用,即使JavaScript会将它们转换为它们的对象类型。以这句话为例,“以下对象类型是按值比较的,而不是按引用比较的:*字符串…”考虑到这一点,以下内容似乎应该是正确的<代码>s1=新字符串(“foo”);s2=新字符串(“foo”);s1==s2代码>…但它不是。似乎区别很重要。请花点时间阅读。我建议:\uuq.isEqual(v1,v2)
。它甚至进行了深入的比较,但这并没有解决问题。问题是OP是在比较对象引用,而不是它们的实际值。我现在明白了。因此,为了比较对象..可以对对象进行每个值或类似(JSON.stringify)的比较?您需要做的是调用对象的内部equals
函数,使对象相等。此方法的细节因对象而异。对于您定义的对象,您应该覆盖默认的equals
和compareTo
方法,以便它们适用于您的对象。