Jquery插件开发

      直到最近写一个小功能的时候灵机一动,才想起来尝试着写很早以前就想进行的插件开发。更郁闷的是,直到写插件的时候,才深刻的明白什么叫面向对象!(不知道都怎么想的,我在qq空间里发这句话的时候大家都评论,“脱单了?”“有对象了?”更有甚者,"我明白,程序员的对象就是代码",此言到是不虚。)

      参考了很多网上资料,然后对比,最后还是参照刘哇勇的博客(http://www.cnblogs.com/Wayou/p/jquery_plugin_tutorial.html)弄的第一个简单插件,这里记录一下完整的插件格式和相关注释,方便快速开发,分享就是快乐嘛。

---------------------------------------------------------------------- 2015-07-27 ---------------------------------------------------------------------------

  每过一段时间回头看自己写的东西,都觉得之前的有问题。。。现在补充一下。

  实际采用的是组合使用构造函数模式和原型模式。

//这里可以以注释的形式写上版本号,插件用途,版权,插件使用格式等等等等

//加上 ; 能防止前面代码没有 ; 结尾的后果,无惧压缩。如果用jsFormat格式化后;会在上面一行,jsHint会不通过,移下来就行了

;(function($,window,document,undefined){ //undefinde是真实的undefined,因为传入时并没有传 //定义构造函数(对象) var Datalist=function(ele,opt){

     //构造函数的属性或方法,每个实例均拥有副本
this.$element=ele; this.defaults={ //定义默认属性 '默认属性名':'对应属性值' }; this.options=$.extend({}, this.defaults, opt); //在使用的时候会自动执行$.extend()函数,让用户自定的属性值覆盖default里面默认的属性值。前面加上{}空对象是为了防止多次调用时前面的属性值修改了默认属性值,详情见对象的深复制一章
}; //所有以字面量赋值形式的函数,不要忘了;
//在原型上定义方法,供所有的实例调用 Datalist.prototype={ //注意,这是以对象字面量形式创建的新对象,constructor属性不再指向Datalist,详情见深复制与对象一文中的原型模式
showList:
function(){ var color=this.options.bgcolor; //值的传递形式(最好这里把需要的全部取出来,毕竟在不同环境下this的指代不一样)         
       //这里是具体的实现过程书写区域
return this; //return是为了不破坏jquery链式调用的特点(注意return的对象是原对象),也可以以返回值的形式回调一个函数 },
     showList2:function(){
       //...
     } };
//将方法添加到jquery对象的原型上 $.fn.myDatalist=function(options){
//创建实例 var datalist=new Datalist(this,options);
//以返回值调用的形式调用其方法 return datalist.showList(); }; })(jQuery,window,document); //其实就是 (function(){}());的闭包形式,定义匿名函数并立即调用,里面的事件绑定什么的就像在全局定义一样的可以用(页面关闭的时候才销毁),但是全局空间里面是不可见不可取得的


 //在需要的地方调用插件
$(document).ready(function(){
   $(object).myDatalist({"属性名":"属性值"}); //没有设置的属性会用默认值
});

      具体的实例可以参见myBoxScroll。github:https://github.com/codetker/myBoxScroll。在线演示:http://www.梦萦无双.xyz/myBoxScroll/Default.html。

      接下来是我改写的常用插件(以前都是面向过程,用一次写一次。。。),希望能帮上和我一样的菜鸟咯。

posted @ 2015-07-13 19:37  codetker  阅读(535)  评论(0编辑  收藏  举报