(function($){
$.fn.z_click = function(options){
//$.extend会将{}与之后的对象($.fn.z_click.defaults,$.fn.z_click.methods,options)进行对比属性
//如果之后对象的属性或者方法存在就会进行覆盖,不存在会进行添加~
var opts = $.extend({},$.fn.z_click.defaults,$.fn.z_click.methods,options);
//this 是谁调用了z_click 传入的是一个jquery对象
console.log(this);
//插件具有的方法
console.log(opts);
opts.init();
this.each(function(){
$(this).bind("click",function(){
opts.init(this,opts);
});
});
};
//插件的默认的参数,其实就是一个对象
$.fn.z_click.defaults = {
events:"hover",
width:640,
height:400,
position:false
}
//插件的默认方法
$.fn.z_click.methods = {
init : function(imgobj,opts){
console.log("init-methods");
this._callMethod();
this._ret();
},
_callMethod : function(){
console.log("_callMethod");
this._ret();
},
_ret : function(){
console.log("_ret");
}
}
})(jQuery);
其实插件就是一个匿名函数的调用
//对下面这段代码进行理解
(function(a){
console.log(a);
})("qq")
其实等价于
var fun = (function(a){
console.log(a);
})
//然后进行调用
fun("qq")
再来看代码
(function(a){
console.log(a);
})("qq")
其实就是写了一个匿名的方法,然后进行调用,其中"qq"就是传入的参数,即 a = "qq" ,而然后在执行方法体内的代码 console.log();
而
(function($){
...
})(jQuery); 也是类似的