天天看點

《JavaScript啟示錄》——1.2 JavaScript構造函數建構并傳回對象執行個體

本節書摘來自異步社群《javascript啟示錄》一書中的第1章,第1.2節,作者:【美】cody lindley著,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

構造函數的作用是建立多個共享特定特性和行為的對象。構造函數主要是一種用于生成對象的餅幹模具,這些對象具有預設屬性和屬性方法。

如果說“構造函數隻是一個函數”,那麼我會說“你是對的,除非使用new關鍵字來調用該函數。”(如new string('foo'))。如果使用new調用某函數,該函數則擔任一個特殊的角色,javascript給予該函數特殊待遇,将該函數的this值設定為正在建構的新對象。除了這個特殊行為,該函數還預設傳回新建立的對象(即this),而不是虛假值。該函數傳回的新對象則被認為是建構該對象的構造函數的執行個體。

再次思考person()構造函數,但這一次要仔細閱讀下面代碼中的注釋,因為其内容強調了new關鍵字的作用。

上述代碼利用了自定義構造函數(即person())來建立cody對象。這與array()構造函數建立array()對象(如new array())沒有什麼不同:

在javascript中,大多數值(不包括原始值)都涉及正在被建立的對象,或者是從構造函數執行個體化的對象。構造函數傳回的對象被稱為執行個體。讀者要熟悉這些語義,同樣要熟悉利用構造函數來建構對象的模式。

繼續閱讀