咱們在編寫jQuery或者js的時候經常要自定義函數,而且寫入一個js文件中,方便引入html中調用。那麼就涉及到如何在js文件中書寫jQuery和js自定義函數的問題了。html
在介紹自定義函數以前必須先來了解下js的自執行函數。jquery
咱們一般將JS代碼寫在一個單獨的JS文件中,而後在頁面中引入該文件。可是,有時候引入後會碰到變量名或函數名與其它JS代碼衝突的問題。那麼如何解決這個問題呢?做用域隔離。在JS中,做用域是經過函數來劃分的,將JS代碼封裝到函數中進行調用能夠避免變量名/函數名衝突的問題,可是這也並非萬無一失,由於封裝函數自己有可能和其它函數重名,解決方案:自執行函數。安全
自執行函數是用一對圓括號將匿名函數包起來,加括號(傳參)會當即執行。由於函數無名字,實現了做用域的絕對隔離和函數名的衝突問題。建立這個自執行函數,就至關於開闢了一個新的命名空間,使裏面的內容與其餘空間隔離,這樣就減小了js文件中的全局變量與其餘全局變量名稱相同的風險。函數
自執行函數的幾種表現方式:spa
方式1:function外面加括號 (推薦,比較常見):.net
上面建立了一個匿名函數(在第一個括號內),第二個括號用於調用該匿名函數,並傳入參數。兩個括號都是表達式,是表達式就有返回值,因此能夠在後面加一對括號讓它們執行.當js的解析器執行到前一個括號後就返回一個函數對象而後連着後面一個括號就構成了一個完整的函數名+(參數)+;的函數執行語句。code
方式2:最前最後加括號 (這是jslint推薦的寫法,好處是,能提醒閱讀代碼的人,這段代碼是一個總體)htm
方式3:function前面加運算符,常見的是!與void 。這樣作的目的就是將函數轉換成表達式。對象
上面介紹了自執行函數,因此咱們能夠用它來減小全局變量的使用,提升安全性。因此在js文件中,咱們經常用自執行函數來包裹住咱們的自定義函數。格式以下:blog
那麼自定義函數如何來定義呢,請看下面的方法
方法一:經過在jQuery全局變量中增長函數
方法二:經過在jQuery全局變量中擴展程序
注意:經過.fn定義的擴展方法,須要經過jQuery選擇器調用,好比經過標籤選擇器$("button").myMethod(args)。
方法三:建立全局變量,在全局變量裏面自定義函數