jQuery在不形成全局衝突的狀況下使用$別名

問題

你但願使用快捷方式$來代替全局命名空間名稱jQuery的名稱,而又不用擔憂會形成全局衝突函數

解決方案

在這裏的解決方案是建立一個匿名的自調用函數,將jQuery對象傳遞給這個函數,而後將$字符當作指向jQuery對象的一個參數。 例如:全部的jQuery代碼能夠封裝在以下的自調用函數中:.net

<!-- lang: js -->
(function($){//使用$參數建立私有做用域的函數
    //私有做用域和$的使用無須擔憂抽鞥圖
})(jQuery);//調用匿名函數並將其傳遞給jQuery對象

討論

實際上,這裏作的就是將jQuery的全局對象引用傳遞給一個建立私有做用域的函數。若是沒有這麼作,而是直接在全局做用域內使用簡寫的$別名,就必須假定包含在HTML文檔中的其餘腳本(或者將來包含的腳本)都沒有使用$字符,這是有必定風險的。當你可以建立私有做用域,何須去冒險呢?code

這樣作的另外一個好處是包含在匿名的自調用函數中的代碼將會運行在本身的私有做用域中。能夠確信,在該函數中放置的任何內容都毫不會和全局做用域中編寫的其餘JavaScript代碼有衝突,爲何要冒着衝突的風險呢?你要作的僅僅是建立一個私有做用域罷了!對象

有關匿名函數和私有做用域,請看私有做用域的介紹blog

相關文章
相關標籤/搜索