参考官网插件资料
先看一个麻雀虽小五脏俱全的demo
(function ( $ ) {//闭包开始
var Hl= $.fn.hilight = function( options ) {
// 参数说明,这里第一个参数{}作用是防止默认值defaults被options覆盖
// 如果是四个参数第一个参数是bool类型的true表示深层拷贝
var opts = $.extend( {}, $.fn.hilight.defaults, options );
var t=$( this );
return t.each(function(index,el) {
var elem = $( el);//取得jq对象
opts.callback.call(elem);// 设置回调函数
dob(elem,opts);
});
};
// 私有方法
function dob(elem,opts){
elem.css(opts.wrapperCSS);// 设置样式
elem.attr(opts.wrapperAttrs);// 设置属性
};
// 对外暴露方法
Hl.doa=function(){};
// 显式修改全局默然参数
$.fn.hilight.defaults = {
wrapperAttrs : {
class: "gallery-wrapper"
},
wrapperCSS: {color:"red",background:"green"},
container :"",
callback:function(){}
};
})( jQuery );// 闭包结束
这个例子包含了一个写一个插件的大部分方面,从最外层开始说起,使用闭包的好处官网有三点解释:
1. 避免全局依赖。
2. 避免第三方破坏。
3. 兼容jQuery操作符’$’和’jQuery
然后就是默认参数设置,这里注释说的很详细了,再就是实现链式调用,然后就是私有方法和对外暴露的方法