3 回答

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超13個(gè)贊
我發(fā)現(xiàn)了這個(gè)很棒的鏈接:
JavaScript:構(gòu)造函數(shù)返回值
上面提到的第二個(gè)魔術(shù)是構(gòu)造函數(shù)返回特定的,可能預(yù)先存在的對(duì)象而不是對(duì)新實(shí)例的引用的能力。如果需要,這將允許您自己管理實(shí)際實(shí)例的數(shù)量;可能是由于資源有限等原因。
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貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
簡短答案
構(gòu)造函數(shù)返回 this對(duì)象。
function Car(){
this.num_wheels = 4;
}
// car = {num_wheels:4};
var car = new Car();
長答案
根據(jù)Javascript規(guī)范,當(dāng)使用調(diào)用函數(shù)時(shí)new,Javascript創(chuàng)建一個(gè)新對(duì)象,然后將該對(duì)象的“ constructor”屬性設(shè)置為所調(diào)用的函數(shù),最后將該對(duì)象分配給name this。然后,您可以訪問this該函數(shù)主體的對(duì)象。
一旦函數(shù)體被執(zhí)行,Javascript將返回:
ANY對(duì)象,如果函數(shù)手動(dòng)返回一個(gè):
function Car(){
this.num_wheels = 4;
return {num_wheels:37};
}
var car = new Car();
alert(car.num_wheels); // 37!
的this對(duì)象,如果函數(shù)沒有return聲明,或如果函數(shù)返回比其他類型的值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'
添加回答
舉報(bào)