对象相等与不相等

看一段代码:

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 ;

 

posted @ 2016-09-23 10:24  挥刀  阅读(281)  评论(0编辑  收藏  举报