对象在javascript中如何表现?

时间:2014-07-27 12:18:03

标签: javascript

我知道我们不能直接比较一个对象是否等于另一个。 {} == {}将返回false。

var b = {};
b === Object(b); //true
b === Object({}); //false

然而,上面的代码让我困惑,为什么b === Object({})返回false? 有人可以解释一下吗?

2 个答案:

答案 0 :(得分:3)

它实际上在documentation

  

Object构造函数为给定值创建一个对象包装器。如果值为null或未定义,则它将创建并返回一个空对象,否则,它将返回与给定值对应的Type对象。 如果该值已经是某个对象,则会返回该值。

如您所知,两个对象永远不会相同

{} == {} // false

但是当你将一个对象传递给Object构造函数时,它会返回完全相同的对象,而不是一个新对象。

var b = {};
b === Object(b); //true

在这里,您将同一个对象传递给您将再次比较的Object构造函数,Object构造函数将返回该对象,并将对象与其自身进行比较将返回true。 换句话说,上述内容与b === b相同 继续这个

b === Object({}); //false 

在这里你传入一个空的新对象,该对象将被返回,但它永远不会是与b相同的对象,并且两个不同的对象永远不会相等,因此{{1} }

答案 1 :(得分:2)

每当您创建对象{}的新实例时,每当您说Object({}) ot {}时。

所以

b={}; // instance one
Object({}); //instance two

b===Object({})b==={}相同。两者都会返回false。

这就是为什么两者都有不同的参考。