首页 新闻 会员 周边

javascript引用类型的等值比较

0
[已解决问题] 解决于 2014-09-25 20:43
1 var str='abcdef';
2 var obj1=new String(str);
3 var obj2=new String(str);
4 
5 alert(obj1==obj2); //false
6 alert(obj1===obj2); //false
今天看到等值检测看到这样的一段代码。

书上说引用类型的等值比较,将直接“比较引用(的地址)”;obj1和obj2是同类型;且值都是通过一个直接量来创建的;但是String()对象是引用类型,所以它们既’不相等‘也不‘相同’。。。。

但是我理解的是,obj1和obj2都是String();类型不是一样吗?并且都是通过str直接量来创建的;引用地址不也一样吗?应该是true啊
wstpa的主页 wstpa | 初学一级 | 园豆:151
提问于:2014-09-25 09:54
< >
分享
最佳答案
1

obj1和obj2 都是通过new String(str)来创建的,

但是var obj1=new String(str);开辟了一个内存空间obj1值为abcdef

var obj2=new String(str);在内存中又增加了一个obj2的值为abcdef

所以这两者值相同但是地址不相同(按地址比较)

奖励园豆:5
骑着蜗牛耍流氓 | 初学一级 |园豆:135 | 2014-09-25 11:20
其他回答(3)
0

new

ayiis | 园豆:356 (菜鸟二级) | 2014-09-25 10:25

恩?不懂啊,还麻烦具体解释一下

支持(0) 反对(0) wstpa | 园豆:151 (初学一级) | 2014-09-25 10:27
typeof('123');
typeof(String('123'));
typeof(new String('123'));

 

支持(0) 反对(0) ayiis | 园豆:356 (菜鸟二级) | 2014-09-25 11:18
0

一样的2份东西 放在不同的地方 另外题目取得有点别扭

隔壁老王来了 | 园豆:99 (初学一级) | 2014-09-25 14:45
0

new String 出来的是object的嘛,你用的str只是个String的嘛,又不是拷贝构造函数,咋个引用就一样了呢?

湖底的鱼 | 园豆:10 (初学一级) | 2014-09-25 15:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册