日期:2014-05-16  浏览次数:20417 次

javascript输出的诡异结果,求解!!!

function C1(name){
if(name) this.name = name;
}

function C2(name){
this.name = name;
}

function C3(name){
this.name = "Tom" || "John";
}
C1.prototype.name = "Tom";
C2.prototype.name = "Tom";
C3.prototype.name = "Tom";
alert(C1.name + C2.name + C3.name);

------解决方案--------------------
本身定义一个函数就自带属性 name 其值就是函数名称,例如 function x(){}  alert(x.name);//弹出x一样

一样的道理

也许你应该这么写 alert(new C1().name+new C2().name+new C3().name);




------解决方案--------------------
如果你要使用对象形式,你就要var oc1 = new C1("tom1"); 然后调用oc1。

另外,你要得到tom的结果,代码可如下:

function C1(name){
        if(name) this.name = name;
    }
     
    function C2(name){
        this.name = name;
    }
     
    function C3(name){
        this.name = "Tom" 
------解决方案--------------------
 "John";
    }
    C1.prototype.name = "Tom";
    C2.prototype.name = "Tom";
    C3.prototype.name = "Tom";
    alert(C1.prototype.name + C2.prototype.name + C3.prototype.name);