【发布时间】:2014-01-31 19:21:47
【问题描述】:
我知道相同的对象不相等,即:
var obj = { name: "Value" };
var obj2 = { name: "Value" };
console.log("obj equals obj2: " + (obj === obj2)); //evaluates to false
然而原始类型是:
var str = "string1";
var str2 = "string1";
console.log("str equals str2: " + (str === str2)); //evaluates to true
我的问题是为什么。为什么对象和基元的处理方式不同?如果一个对象只是一个空容器,只有您指定放入容器中的属性,为什么容器的相同属性评估结果不一样?我在 SO 和其他地方四处寻找这个答案,但没有找到答案。
JS 对象在 DOM 中是否被视为不同于原始类型的东西?
谢谢
【问题讨论】:
-
您询问语言的实现,所以我不确定,但想象一下必须对比较的每个对象的每个字段进行内部检查,然后必须定义什么是完全相等的.我猜设计师决定将对象的这种相等性留给程序员。
标签: javascript object equality primitive