一、插件的基本要點
1. 命名jQuery.[插件名].js
2. 所有的對象方法都應當附加到jQuery.fn對象上,而所有的全部函數都應當附加到jQuery對象本身上
3. 在插件內部的this指向的是當前通過選擇器獲取的jQuery對象,而不像一般方法那樣,如click,內部的this指向的是DOM元素
4. 可以通過this.each來遍歷所有的元素
5. 所有的方法或函數插件,都應當以分號結尾。否則壓縮的時候可能出現問題。爲了穩妥些,甚至可以在插件頭部先加上一個分號,以免他人不規範的代碼影響自身的插件代碼
6. 插件應該返回一個jQuery對象,以保證插件的可鏈式操作
7. 避免在插件內部使用$作爲jQuery對象的別名,而應使用完整的jQuery來表示,避免衝突.
當然,可以使用閉包這種技巧來回避這個問題。
二、閉包的簡單概念
允許使用內部函數(即該函數在一個函數的內部)且該內部函數可以訪問所在函數的所有變量、參數或者其他函數,當這樣的內部函數在包含他們的外部函數之外被調用時,就會形成閉包(即內部函數會在外部函數返回後被執行)。當這個內部函數執行時,它仍然必須訪問其外部函數的局部變量,參數以及其他內部函數。這些局部變量、參數和函數聲明(最初)的值是外部函數返回時的值、但也會受到內部函數的影響
閉包:
;(function($){
var foo = "message";
var bar = function(){
alert(foo);
}
$.BAR = bar;
// 通過這種方式,讓匿名函數內部的函數bar(),逃逸到全部可訪問的範圍內,這樣就可以 匿名函數之外通過調用jQuery.BAR();來訪問定義的函數bar()
})(jQuery);
訪問:
$(function(){
$.BAR();
});