new一個物件的過程發生了什麼
阿新 • • 發佈:2018-12-23
建立一個物件通常需要兩步:
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)返回新物件。