JavaScript中的两个对象有什么区别

时间:2014-08-05 15:11:33

标签: javascript object difference

任何人都可以帮助我理解在JavaScript中以两种方式创建的obj1obj2的区别吗?它们在控制台中看起来一样。

var obj1 = { 'name': 'blue', 'shade': 'dark'};
var obj2 = JSON.parse('{"name":"blue","shade":"dark"}');

因为

 (obj1 === obj2)  is false as 
 (obj1 == obj2) is false

在javascript控制台中显示为

Object {name: "blue", shade: "dark"}
Object {name: "blue", shade: "dark"}

3 个答案:

答案 0 :(得分:3)

虽然对象内容相同,但您引用了两个单独的对象,这就是为什么==和===都失败(它们检查引用而不是内容)。

答案 1 :(得分:1)

正如ABucin所说,javascript检查引用,如果你仍想检查两个jsons是否相等,你可以尝试使用

JSON.stringify(obj1) === JSON.stringify(obj2)

或检查每个键(如果键的顺序不同,则会更复杂但效率更高)。

试试这个:

Compare 2 json objects

答案 2 :(得分:0)

您正在使用obj1创建对象,而在obj2中,您将JSON对象解析为对象。由于两个对象都不同(不同的引用),因此它们被视为不同的

您可以通过here

了解详情