猿问

javascript引用类型的等值比较

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啊
DIEA
浏览 535回答 5
5回答

慕运维8079593

obj1和obj2 都是通过new String(str)来创建的, 但是var obj1=new String(str);开辟了一个内存空间obj1值为abcdef var obj2=new String(str);在内存中又增加了一个obj2的值为abcdef 所以这两者值相同但是地址不相同(按地址比较)

慕丝7291255

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

呼如林

typeof('123'); typeof(String('123')); typeof(new String('123'));

慕田峪7331174

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

白衣染霜花

new String 出来的是object的嘛,你用的str只是个String的嘛,又不是拷贝构造函数,咋个引用就一样了呢?
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答