1. 程式人生 > >new一個物件的過程發生了什麼

new一個物件的過程發生了什麼

建立一個物件通常需要兩步:

    1. 定義建構函式;

    2. 通過new來建立物件例項。

當我們使用new新建一個物件的時候,以new foo(...)為例:

    1. 一個新的物件被建立,同時繼承了物件型別的原型,即foo.prototype;

    2. 執行物件型別的建構函式,同時該例項的屬性和方法被this所引用,即this指向新構造的例項;

    3. 如果建構函式return了一個新的“物件”,那麼這個物件就會取代整個new出來的結果。如果建構函式沒有return物件,那麼就會返回步驟1所建立的物件,即隱式返回this。(一般情況下建構函式不會返回任何值,不過在一些特殊情況下,如果使用者想覆蓋這個值,可以選擇返回一個普通的物件來覆蓋。)

---------------------------------------------------------------我是分割線------------------------------------------------------------------

2017/08/30

摘抄自js高階程式設計(第三版)145頁:

要建立Person的新例項,必須使用new操作符。以這種方式呼叫建構函式實際上會經歷以下4個步驟:

(1)建立一個新物件;

(2)將建構函式的作用域賦給新物件(因此this就指向了這個新物件);

(3)執行建構函式中的程式碼(為這個新物件新增屬性);

(4)返回新物件。