首页 > 其他 > 详细

对象相等与不相等

时间:2016-09-23 11:01:08      阅读:128      评论:0      收藏:0      [点我收藏+]

看一段代码:

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 ;

 

对象相等与不相等

原文:http://www.cnblogs.com/suoking/p/5899011.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!