|
導讀微信小程序,簡稱小程序,英文名Mini Program,是一種不需要下載安裝即可使用的應用,它實現了應用“觸手可及”的夢想,用戶掃一掃或搜一下即可打開應用。小程序是一種不用下載就能使用的應用,也是一... 微信小程序,簡稱小程序,英文名Mini Program,是一種不需要下載安裝即可使用的應用,它實現了應用“觸手可及”的夢想,用戶掃一掃或搜一下即可打開應用。小程序是一種不用下載就能使用的應用,也是一項門檻非常高的創新,經過將近兩年的發展,已經構造了新的小程序開發環境和開發者生態。 可子類化的內建對象(Subclassable Built-ins)在ES6中,像Array,Date和Dom元素這樣的內建對象都可以被子類化。
通過子類工廠實現簡單的合成器(Simple mixins via subclass factories) mixin在javascript里可以看作是一種從別的對象"借用"功能的方法。每一個新定義的對象都有一個 prototype屬性,其他的對象就可以從這里"借用"功能。這里的功能可以是一個屬性,也可以是一個方法。 Mixin支持在一個系統中降解功能的重復性,增加功能的重用性。在一些應用程序也許需要在所有的對象實體共享行為的地方,我們能夠通過在一個Mixin中維護這個共享的功能,來很容易的避免任何重復,而因此專注于只實現我們系統中真正彼此不同的功能。 在 ES6 中,我們可以采用全新的基于類繼承的 “mixin” 模式設計更優雅的“語義化”接口,這是因為 ES6 中的 extends 可以繼承動態構造的類,這一點和其他的靜態聲明類的編程語言不同。當 ES6 類繼承另一個類,被繼承的類可以是通過任意表達式創建的動態類。這個特性可以允許實現一種合成器模式,用一個函數來將一個類 C 映射到一個新的繼承了C的類。 mixin 式繼承的基本形式:
用 mixin 實現 Serilizable
上面的代碼,我們用 ES6 的類繼承實現了 Serializable,它檢查當前實例的類上是否有定義 stringify 和 parse 靜態方法,如果有,使用靜態方法重寫 toString 方法,如果沒有,則在實例化對象的時候拋出一個異常。然后通過 class Employ extends Serializable(Person) 來實現可序列化,在這里我們沒有可序列化 Person 本身,而將 Serializable 在語義上變成一種修飾,即 Employee 是一種可序列化的 Person。 使用weakmaps實現私有實例成員(Private instance members with weakmaps) Weakmaps解決了私有數據成員的遺留問題。首先,再也沒有必自己生成一個唯一的ID了,因為該對象實例本身就是一個唯一ID。其次,當一個對象實例被垃圾回收,綁到該實例中的weakmap中所有數據也會被回收。
privateData在這個例子中是一個WeakMap的實例 。當一個新的Shape被創建時,一個weakmap的條目會被創建用來以便該實例來保存包含私有數據的對象。在weakmap中最關鍵的是this ,即使對于開發者來說獲取一個Shape對象的引用是微不足道的一件事,他們也無法從實例外來訪問到privateData,所以,數據被從麻煩制造者手中安全保護了。任何想要操縱私有數據的方法只能夠通過傳入實例的this ,從而拿到返回的對象。在這個例子中, getName()會獲取對象并返回name屬性的值。 尾調用優化(Tail-call optimization) 尾調用(Tail Call)是函數式編程的一個重要概念,是指某個函數的最后一步是調用另一個函數。 尾調用優化是為了避免不斷保留和創建新的調用棧,而在函數最后一步調用另一個函數。最后一步的意義就在于:不需要保留當前函數的執行環境,在調用的下一個函數執行完畢并給出返回值后,直接再返回,類似于pipe。 函數調用自身,稱為遞歸。如果尾調用自身,就稱為尾遞歸。尾遞歸(Tail-recursion)就是利用尾調優化的特性,從語言機制上進行遞歸操作的優化,防止堆棧溢出(stack overflow)。 "尾調用優化"對遞歸操作意義重大,所以一些函數式編程語言將其寫入了語言規格。ES6也是如此,第一次明確規定,所有 ECMAScript 的實現,都必須部署"尾調用優化"。這就是說,在 ES6 中,只要使用尾遞歸,就不會發生棧溢出,相對節省內存。 遞歸非常耗費內存,因為需要同時保存成千上百個調用幀,很容易發生“棧溢出”錯誤(stack overflow)。但對于尾遞歸來說,由于只存在一個調用幀,所以永遠不會發生“棧溢出”錯誤。 下面代碼是一個階乘函數,計算n的階乘,最多需要保存n個調用記錄,復雜度 O(n)
如果改成尾遞歸調用,只保留一個調用記錄,復雜度 O(1)
計算fibonacci數列,能充分說明尾遞歸優化的重要性
使用尾遞歸優化過的fibonacci 遞歸算法
自定義錯誤類(Custom Errors) Error是JavaScript中的錯誤類,它同時也是一個構造函數,可以用來創建一個錯誤對象。Error實例會在發生運行進錯誤時拋出,Error像其它對象一樣,也可以由用戶自定義創建。 ES6通過派生實現自定義錯誤類
以上就是ES6新特性開發微信小程序(10)的詳細內容,更多請關注php中文網其它相關文章! 小程序是一種不需要下載安裝即可使用的應用,它實現了應用“觸手可及”的夢想,用戶掃一掃或者搜一下即可打開應用。 |
溫馨提示:喜歡本站的話,請收藏一下本站!