一、插件的基本要点
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();
});