首页 > 代码库 > 对象相等与不相等

对象相等与不相等

看一段代码:

var a =function xx(){                return {xxx:"eee"}            };        var c = a();        var b = a();        console.log(c == b)  //false

c和b是两个单独的对象,所以不相等

等同于

1 var e = {xxx:"eee"}2         var f = {xxx:"eee"}3         console.info(e == f)

但是这种又是相等的

1         var ee = {xxx:"eee"}2         var ee1 = ee;3         var ee2 = ee;4         console.log(ee1 == ee2)

但是这样又不想等了:

console.log({xxx:"eee"} == {xxx:"eee"})

得出结论 引用类型的值 指向同一个堆内存的指针会相等,而就算两个完全相同的对象因为是两个堆内存所以不会相同:

由此得出以下结论:如下代码肯定相等:

1         var ee = {xxx:"eee"}2         var ee1 = ee;3         var ee2 = ee;4 5         ee1.cc = "4444";6         console.log(ee1 == ee2);

修改ee1时其实是通过指针修改的 ee ;

 

对象相等与不相等