码迷,mamicode.com
首页 > 其他好文 > 详细

对象相等与不相等

时间:2016-09-23 11:01:52      阅读:103      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!