看以下代码:function P(){
return P.t;
this.name="world";
}
P.t={ name : "Hello" };
var test=new P();
alert(test.name);我觉得结果应该是undefined,但结果是Hello
我的理解是 new P() 的时候应该是新创建了一个对象,然后返回这个新创建的对象,尽管构造函数里边已经有return语句。
大家是怎么理解的啊???
return P.t;
this.name="world";
}
P.t={ name : "Hello" };
var test=new P();
alert(test.name);我觉得结果应该是undefined,但结果是Hello
我的理解是 new P() 的时候应该是新创建了一个对象,然后返回这个新创建的对象,尽管构造函数里边已经有return语句。
大家是怎么理解的啊???
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"
function P(){
return P.t;//返回了
this.name="world";//这句永远不会执行到
}
P.t={ name : "Hello" };//如果没有这句,就会是undefined了
var test=new P();//相当于:var test = {name:"Hello"}。
alert(test.name);
p.t={ name: "Hello"};
和
return P.t这两个P.t其实是指向同一个内存区域
function P(){
return P.t;
this.name="world";
}
P.t="heh";
var test=new P();
alert(test.name);
现在就是你想要的了吧?
如果你的构造器有return ,并且返回的是对象的话,那么将返回这个对象