3 回答
TA贡献1871条经验 获得超13个赞
我发现了这个很棒的链接:
JavaScript:构造函数返回值
上面提到的第二个魔术是构造函数返回特定的,可能预先存在的对象而不是对新实例的引用的能力。如果需要,这将允许您自己管理实际实例的数量;可能是由于资源有限等原因。
var g_deebee = new Deebee();
function Deebee() { return g_deebee; }
var db1 = new Deebee();
var db2 = new Deebee();
if (db1 != db2)
throw Error("JS constructor returned wrong object!");
TA贡献1812条经验 获得超5个赞
简短答案
构造函数返回 this对象。
function Car(){
this.num_wheels = 4;
}
// car = {num_wheels:4};
var car = new Car();
长答案
根据Javascript规范,当使用调用函数时new,Javascript创建一个新对象,然后将该对象的“ constructor”属性设置为所调用的函数,最后将该对象分配给name this。然后,您可以访问this该函数主体的对象。
一旦函数体被执行,Javascript将返回:
ANY对象,如果函数手动返回一个:
function Car(){
this.num_wheels = 4;
return {num_wheels:37};
}
var car = new Car();
alert(car.num_wheels); // 37!
的this对象,如果函数没有return声明,或如果函数返回比其他类型的值object
function Car() {
this.num_wheels = 4;
return 'VROOM';
}
var car = new Car();
alert(car.num_wheels) // 4
alert(Car()); // No 'new', so this alerts 'VROOM'
添加回答
举报