看以下代码:function P(){
    return P.t;
    this.name="world";
}
P.t={ name : "Hello" };
var test=new P();
alert(test.name);我觉得结果应该是undefined,但结果是Hello
我的理解是 new P() 的时候应该是新创建了一个对象,然后返回这个新创建的对象,尽管构造函数里边已经有return语句。
大家是怎么理解的啊???

解决方案 »

  1.   


    function P(){//3
        return P.t;
        this.name="world";
    }
    P.t={ name : "Hello" };//1
    var test=new P();//2
    alert(test.name);//4new P(); ——> return P.t; ——>P.t={name:"Hello"}即new P()返回结果是{name:"Hello"}。
    相当于:var test = {name:"Hello"}。
    所以alert(test.name)的结果是"Hello"
      

  2.   

    楼上的对。
    function P(){
        return P.t;//返回了
        this.name="world";//这句永远不会执行到
    }
    P.t={ name : "Hello" };//如果没有这句,就会是undefined了
    var test=new P();//相当于:var test = {name:"Hello"}。
    alert(test.name);
      

  3.   

    p.t={ name: "Hello"};这句为什么会起作用呢?执行到var test = new p();的时候上面这句不是已经执行过了么?
      

  4.   

    因为P.t是个静态变量
    p.t={ name: "Hello"};

    return P.t这两个P.t其实是指向同一个内存区域
      

  5.   

    这个我知道,我只是很奇怪在new出来的值居然可以是构造函数里return的结果。这种语法很奇怪。
      

  6.   


    function P(){
        return P.t;
        this.name="world";
    }
    P.t="heh";
    var test=new P();
    alert(test.name);
    现在就是你想要的了吧?
    如果你的构造器有return ,并且返回的是对象的话,那么将返回这个对象