天天看點

《JavaScript架構設計》——1.2 對象擴充

本節書摘來自異步社群《javascript架構設計》一書中的第1章,第1.2節,作者:司徒正美著,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

我們需要一種機制,将新功能添加到我們的命名空間上。這方法在javascript通常被稱做extend或mixin。javascript對象在屬性描述符(property descriptor)沒有誕生之前,是可以随意添加、更改、删除其成員的,是以擴充一個對象非常便捷。一個簡單的擴充方法實作是這樣。

不過,舊版本ie在這裡有個問題,它認為像object的原型方法就是不應該被周遊出來,是以for in循環是無法周遊名為valueof、tostring的屬性名。這導緻,後來人們模拟object.keys方法實作時也遇到了這個問題。

在不同的架構,這個方法還有不同的實作,如ext分為apply與applyif兩個方法,前者會覆寫目标對象的同名屬性,而後者不會。dojo允許多個對象合并在一起。jquery還支援深拷貝。下面是mass framework的mix方法,支援多對象合并與選擇是否覆寫。

繼續閱讀