簡單記錄下new一個js對象時,做了什麼事情。
1、建立一個空對象=》{}
2、将1中建立的空對象的__proto__屬性指向構造函數的prototype屬性。
3、将構造函數的this指定為1中建立的空對象。
4、執行構造函數(為this綁定屬性、複制等操作)。
5.1、如果構造函數有傳回值,且傳回類型為引用類型,則将構造函數的傳回值作為new的結果傳回。
5.2、如果構造函數有傳回值,且傳回類型為基礎資料類型,如int,則無論構造函數傳回什麼都無效,都将1中建立對象作為構造函數傳回值傳回。
5.3、如果構造函數沒有傳回值,則将1中建立對象作為構造函數傳回值傳回。