詳解Javascript架構中的全域變數

來源:互聯網
上載者:User
  • 詳解Javascript架構中的全域變數

 

    本文將介紹Javascript架構中的全域變數,簡單的代碼。希望通過本文,能讓大家對全域變數有個全新的認識。

    對於Javascript架構,大家還是比較理解的。對於Javascript架構中的全域變數,大家還是要仔細的思考,這樣才能在開發過程中達到事半功倍的效果。

    縱觀各大類庫的實現,一開始基本都是定義一個全域變數,然後對它進行擴充。如Prototype.js的Prototype,mootools的Native,Base2的Base,Ext的Ext,JQuery的JQuery,YUI的YUI,dojo的dojo,MochiKit的MochiKit等等。從全域變數的汙染程度來看,分為兩大類,Prototype,mootools與Base2歸一類。Prototype的哲學是對JS原生對象進行擴充。早些年,Ptototype差點成為事實的標準,因此基本沒有考慮到與其他庫的共存問題。基於Prototype,也發展出諸如script.aculo.us,rico,Plotr,ProtoChart,Scripty2等非常優秀的類庫以及一大堆收費外掛程式,非JQuery那一大堆垃圾外掛程式所能比擬的。不過,有點淵源的外掛程式幾乎與Prototype有關,如著名的lightbox。mootools是Prototype的升級版,更加OO,全面複製其API。Base則是想修複IE的Bug,讓IE擁有標準瀏覽器的API,因此也把所有原生對象汙染一遍。

    剩下幾個大類庫就奉行非侵入的原則,盡量減少全域變數。如Ext還有更多小型類庫,它會選擇一個自訂對象(其實也是window的一個自訂屬性),然後對它的屬性進行擴充。基本思路是

 
  1. Ext = {};   
  2. Ext.Element= function(){}   
  3. Ext.DomQuery = function(){}   
  4. Ext.DomHelper = function(){} 

jQuery也是一個window自訂屬性,而且從一開始就汙染了兩個(JQurey與$),因此一旦其他類庫佔用了$,它就退回用JQuery。它與Ext最大的不同的是。它是一個函數對象(Function),而不是一個純對象(Object)。它的所有擴充都是基於它的JQuery.fn即JQuery.prototype。其他可能暴露出來的變數都收到閉包與函數中。

dojo上來就來就構建它無擬倫比的包機制。整個命名空間都是由eval產生,然後再慢慢往dojo上添加屬性,情況同Ext。不過,它的設計是我見過的類庫中最複雜的,涉及的領域也非常廣泛,搞到代碼量達到驚人的9千行(兼注釋)。

MochiKit不知是不是從dojo中派生出來,沒怎麼研究。但它的組織形式與Ext與dojo很相似。

YUI與JQuery很相似,是一個函數對象,只不過它後面就沒有像JQuery那麼瘋狂,什麼都往原型中加。無疑,YUI與JQuery的理念是非常新穎的,函數比對象更能玩出花樣,起碼做鏈式操作也輕鬆性。但JQuery一開始就瞄準頁面的那個DOM元素,而YUI,dojo,Ptototype,mootools等具有強大繼承機制的,更樂意建立一個類,這就是JQuery在UI怎麼也比不上它的前輩的原因。另外,YUI的作者們在CSS,HTML也造詣極深,因此其UI設計是非常值得學習的

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.