天天看點

《JavaScript應用程式設計》一一3.3 原型

本節書摘來華章計算機出版社《javascript應用程式設計》一書中的第3章,第3.3節,作者:eric elliott 更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

原型讓你能夠對現有對象克隆,進而建構出一個擁有其範性方法的代理對象。

工廠函數

在javascript中,有許多靈活且簡單的構造函數,所有javascript中的函數均可以傳回對象,是以你無需再使用構造函數去建構對象。相較于構造函數,工廠函數不僅為調用者封裝了對象執行個體化的細節,而且省略了多餘的new關鍵字。在工廠函數中,可以組合使用javascript的所有語言特性,甚至能夠在程式運作期間,動态修改對象的建構邏輯(而且絲毫不影響正在執行個體化的對象)。

流式api(不要與流式javascript搞混淆)

流式api是一組能夠讓代碼執行看起來更像自然語言的接口協定,實作了流式api的方法大都可以被鍊式調用,但并不是所有可以被鍊式調用的方法都可以視為流式api。流式api的接口協定規定,對象中的每一項方法均可以傳回一個對象,而這個對象中包含了下一步執行所需要的方法組。通過這種方式,方法可以以短句的形式銜接在一起,每個方法都在前一項方法的執行結果上被調用。jquery與jasmine均是流式api應用的例子。

随着prototype、jquery等類庫的興起,流式javascript的概念在社群中得到普及,但是“流式”風格并不是由某個人或某個組織所開創,也不是什麼新的獨一無二的技術,它隻是由javascript語言自身的核心特性自然發展演化而來。就其本身來說,既不是一門新的語言風格,也不是一項從其他語言中借鑒來的程式設計習慣。

甚至“流式”這一命名都顯得有些愚蠢,其實它并不是為了與市面上多數javascript教程中笨重的代碼模式區分開。嚴格來說,“流式”不是一種新的程式設計風格,它隻是那些資深javascript程式員平日裡所用到的程式設計最佳實踐。

随着時間的推移,我們可以看到“流式”正成為推動javascript語言向前演進的一股力量。它可能會給javascript帶來新的語言特性,甚至是執行效率的提升。

原型

原型是一種特别的對象,它為指定對象模組化并作為其原始模型。它的作用與類極為類似,因為通過原型你可以建構出任意數量的對象執行個體,不同之處在于它也僅僅是對象。在javascript中,原型有兩種使用方式:原型代理與原型克隆。

繼續閱讀