为了账号安全,请及时绑定邮箱和手机立即绑定

javascript引用类型的等值比较

javascript引用类型的等值比较

DIEA 2018-12-06 22:47:16
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啊
查看完整描述

5 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

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

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

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

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

查看完整回答
反对 回复 2018-12-24
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

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

查看完整回答
反对 回复 2018-12-24
?
呼如林

TA贡献1798条经验 获得超3个赞

typeof('123');
typeof(String('123'));
typeof(new String('123'));
查看完整回答
反对 回复 2018-12-24
?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

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

查看完整回答
反对 回复 2018-12-24
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

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

查看完整回答
反对 回复 2018-12-24
  • 5 回答
  • 0 关注
  • 534 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号