注册 登录
编程论坛 JavaScript论坛

一个小小的问题望高手求解

libertas1 发布于 2009-11-08 02:50, 579 次点击
String.prototype.self=function()
{
return this;
}
var s="s";
alert("s".self()=="s")
alert(s.self()==s)
alert("s"==="s")
alert("s".self()=="s".self())
alert(s.self()==s.self())
为什么以上两个红色部分在IE7中运行结果均为false,在下菜鸟对此很不解
那位高手能否解释一下?


[ 本帖最后由 libertas1 于 2009-11-8 02:55 编辑 ]
4 回复
#2
libertas12009-11-08 03:35
如果说第一个是因为两个"s" this返回引用不同所以是false,那第二个是为什么是false?
#3
libertas12009-11-08 04:04
第二也是因为调用self()时,根据s基本数据类型变量创建两个不同的String对象,this返回引用不同导致的吗?

[ 本帖最后由 libertas1 于 2009-11-8 04:20 编辑 ]
#4
foktime2009-11-10 09:44
==两边如果是对象,则检查其地址是否相等
即使你这样定义两个空对象,也是不相等的
var a={};
var b={};
alert(a == b);  //false
但如果是对象的实例化 如下
程序代码:
<script>
    function s(){return this;}
    var a=new s();
    var b=new s();
    alert(a == a);    //这里是true
    alert(a == b);    //false
</script>
#5
libertas12009-11-11 09:26
回复 4楼 foktime
虽然跟我所想知道的不太一样,但是 还想说声谢谢
1