天天看點

js中new操作符做了什麼

簡單記錄下new一個js對象時,做了什麼事情。

1、建立一個空對象=》{}

2、将1中建立的空對象的__proto__屬性指向構造函數的prototype屬性。

3、将構造函數的this指定為1中建立的空對象。

4、執行構造函數(為this綁定屬性、複制等操作)。

5.1、如果構造函數有傳回值,且傳回類型為引用類型,則将構造函數的傳回值作為new的結果傳回。

5.2、如果構造函數有傳回值,且傳回類型為基礎資料類型,如int,則無論構造函數傳回什麼都無效,都将1中建立對象作為構造函數傳回值傳回。

5.3、如果構造函數沒有傳回值,則将1中建立對象作為構造函數傳回值傳回。

繼續閱讀