建構函式詳解

2021-08-28 04:17:43 字數 1144 閱讀 8840

(一)、建構函式的原理

記住當使用new的時候,到底發生了什麼事情,在使用new操作符來呼叫乙個建構函式的時候,發生了什麼呢?其實很簡單,就發生了四件事:

第一行,建立乙個空物件obj。

第二行,將這個空物件的__proto__成員指向了建構函式物件的prototype成員物件,這是最關鍵的一步,具體細節將在下文描述。

第三行,將建構函式的作用域賦給新物件,因此ca函式中的this指向新物件obj,然後再呼叫co函式。於是我們就給obj物件賦值了乙個成員變數p,這個成員變數的值是」 i』min constructed object」。

第四行,返回新物件obj。當建構函式裡包含返回語句時情況比較特殊,這種情況會在下文中說到。

(二)、建構函式的記憶體分配

總結:是使用物件new object()中的this作為建構函式的this來執行,所以this就是聯絡不同物件

其實就是obj.__proto__ = co.prototype;和co.call(obj);

(三)、建構函式和普通函式的區別

1如果不是使用new,而是直接呼叫函式,就是普通的函式呼叫。如果該函式有返回值,那麼就是該指向函式的物件就有值,否則只是undefiend

2、  通過上面兩段**,我們可以得出乙個猜測,如果函式返回值為常規意義上的值型別(number、string、boolean)時,new函式將會返回乙個該函式的例項物件,而如果函式返回乙個引用型別(object、array、function),則new函式與直接呼叫函式產生的結果等同。也就是都是函式的返回值。通過在 test函式中返回不同型別的值進行測試,可以證實這一點。  

(四)、物件的建立方式

第一種:var person=new object()

第二種:var person=;

如果要新增屬性,可以使用es5新增的功能:var person={};object.definedproperty}

建構函式詳解

類的六個預設函式 一 建構函式的定義 一種特殊的成員函式,主要用於為物件分配空間,進行初始化。建構函式的任務是初始化類物件的資料成員,無論何時只要類的物件被建立,就會執行建構函式。eg 定義乙個date的建構函式 includeusing namespace std class date date ...

建構函式詳解

建構函式是類中的乙個特殊成員函式,它一般為公有的。在特殊的情況下它可能為私有的。此時這個類將會無法新建物件。當有乙個物件被新建時,建構函式會被自動的呼叫,這種機制能夠確保正確的初始化。在乙個空類中,建構函式是預設生成的。但如果我們寫了乙個建構函式之後,便不會再生成預設的建構函式。一般的,在建立物件的...

建構函式詳解

作用 構造方法用來初始化類的物件,與父類的其他成員不同,它不能被子類所繼承 子類可以繼承父類所有的public成員方法和變數,但不能繼承父類的構造方法 因此,在建立子類物件時,為了初始化從父類繼承來的資料成員,系統需要呼叫其父類的構造方法。如果沒有顯示的建構函式,編譯器會給乙個預設的建構函式,並且該...