位置:首頁 > 軟件操作教程 > 編程開發(fā) > JavaScript > 問題詳情

JavaScript 構(gòu)造函數(shù)的返回值

提問人:劉團(tuán)圓發(fā)布時(shí)間:2020-11-26

■知識(shí)點(diǎn)

    構(gòu)造函數(shù)允許使用return語句。如果返回值為簡單值,則將被忽略,直接返回this指代的實(shí)例對(duì)象;如果返回值為對(duì)象,則將覆蓋this指代的實(shí)例,返回return后面跟隨的對(duì)象。

    為什么會(huì)出現(xiàn)這種情況呢?這與new命令解析過程有關(guān)系,使用new命令調(diào)用函數(shù)的解析過程

如下。

    第1步,當(dāng)使用new命令調(diào)用函數(shù)時(shí),先創(chuàng)建一個(gè)空對(duì)象,作為實(shí)例返回。

    第2步,設(shè)置實(shí)例的原型,指向構(gòu)造函數(shù)的prototype屬性。

    第3步,設(shè)置構(gòu)造函數(shù)體內(nèi)的this值,讓它指向?qū)嵗?/p>

    第4步,開始執(zhí)行構(gòu)造函數(shù)內(nèi)部的代碼。

    第5步,如果構(gòu)造函數(shù)內(nèi)部有return語句,而且return后面跟著一個(gè)對(duì)象,會(huì)返回return語句指定的對(duì)象;否則會(huì)忽略return返回值,直接返回this對(duì)象。

■實(shí)例設(shè)計(jì)

    下面的示例在構(gòu)造函數(shù)內(nèi)部定義return返回一個(gè)對(duì)象直接量,當(dāng)使用new命令調(diào)用構(gòu)造函數(shù)時(shí),返回的不是this指代的實(shí)例,而是這個(gè)對(duì)象直接量,因此當(dāng)讀取x和y屬性值時(shí),與預(yù)期的結(jié)果是不同的。

function Point(x,y)                              //構(gòu)造函數(shù)

    this.x = x;                                        //私有屬性

    this.y = y;                                        //私有屬性

    return { x : true, y : false }

}

var pi = new Point(100,200);             //實(shí)例化對(duì)象1

console.log(pi.x);                               //true

console.log(pi.y);                               //false

繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部