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啊
obj1和obj2 都是通过new String(str)来创建的,
但是var obj1=new String(str);开辟了一个内存空间obj1值为abcdef
var obj2=new String(str);在内存中又增加了一个obj2的值为abcdef
所以这两者值相同但是地址不相同(按地址比较)
new
恩?不懂啊,还麻烦具体解释一下
typeof('123'); typeof(String('123')); typeof(new String('123'));
一样的2份东西 放在不同的地方 另外题目取得有点别扭
new String 出来的是object的嘛,你用的str只是个String的嘛,又不是拷贝构造函数,咋个引用就一样了呢?