编写插件的目的是给已经有的一系列方法或函数做一个封装,以便在其他地方重复使用,提高开发效率和方便后期维护。

在编写jQuery插件的时候,我们一般会遵循一些约定:

  • jQuery插件推荐命名为:jquery.插件名.js。
  • 所有对象方法都应当附加到jQuery.fn对象上,而所有的全局函数都应当附加到jQuery对象本身上。
  • 在插件内部,this指向的是当前通过选择器获取的jQuery对象;而一般的方法如click()方法,内部的this指向的是DOM元素。
  • 所有的方法或函数插件,都应当以分号结尾,否则压缩的时候可能出现问题,甚至可以在插件头部先加上一个分号,以免他人的不规范代码给插件带来影响。
  • 插件应该返回一个jQuery对象,以保证插件的可链式操作。除非插件需要返回的是一些需要获取的量,例如字符串或者数组等。
  • 为了避免冲突,避免在插件内部使用$作为jQuery对象的别名,而应使用完整的jQuery来表示。当然,也可以利用闭包技术来回避这个问题,使插件内部继续使用$作为jQuery的别名。

闭包:当内部函数在包含它们的外部函数之外被调用的时候,就会形成闭包,即内部函数会在外部函数返回后执行。

function a(){
var i = 0;
function b(){
alert(++i);
}
return b;
}
var c = a();
c();

以上代码中,当函数a的内部函数b被函数a外的一个变量c引用的时候,就创建了一个我们通常所谓的“闭包”。

另外,还可以通过匿名函数创建闭包(一个函数是不是匿名函数和是不是闭包并没有直接关系):

var JSON = JSON || {};
(
function(){
var f = function(n){
for(var i=0;i<n;i++){
alert(i);
}
};
JSON.f=f;
})();
JSON.f(1);

内部函数:函数定义和函数表达式位于另一个函数的函数体内,并且这些内部函数可以访问它们所在的外部函数中声明的所有局部变量、参数和声明的其他内部函数。

闭包的作用:1、保护函数内的变量安全;2、在内存中维持一个变量(javascript垃圾回收机制)。

利用闭包的特性,我们可以在既避免内部临时变量影响全局空间,又可以在插件内部使用$符号作为jQuery的别名。常见的jQuery插件都是以下这种形式:

(function(){
/*编写代码*/
})();

首先定义一个匿名函数function(){/*编写代码*/},然后用括号括起来,最后通过()这个运算符来执行。可以传递参数进去,以供内部函数使用。

//为了更好的兼容性,开始前有个分号
;(function($){ //此处将$作为匿名函数的形参
/*编写代码,可以使用$作为jQuery的别名*/
})(jQuery); //将jQuery作为实参传递给匿名函数

编写jQuery插件(一)——插件约定及插件中的闭包的更多相关文章

  1. 如何编写jQuery插件

    要说jQuery 最成功的地方,我认为是它的可扩展性吸引了众多开发者为其开发插件,从而建立起了一个生态系统.这好比大公司们争相做平台一样,得平台者得天下.苹果,微软,谷歌等巨头,都有各自的平台及生态圈 ...

  2. 编写jquery常用插件的基本格式

    写jquery插件需要明白的那些知识点 1.jquery中$是神马?$.fn又是神马? 稍微有jquery经验的都知道在jquery中$等价于jQuery,在控制台一试便知: 我们在jquery(1. ...

  3. 编写jQuery插件--实现返回顶部插件

    国庆过去一周多了,作为IT界的具有严重’工作狂‘性质的宅人,居然还没走出玩耍的心情,拖了程序猿的脚后跟了.最近工作不顺,心情不佳,想吐槽下公司,想了还是厚道点,以彼之道还施彼身,觉得自己也和他们同流合 ...

  4. 编写JQuery插件-3

    该了解我们也知道的差不多了,接下来编写我们第一个jq插件吧 封装对象方法的插件 我们编写一个设置和获取颜色的插件,我们需要实现两个功能 1.设置匹配元素的颜色 2.获取匹配元素(元素集合的第一个)的颜 ...

  5. 如何编写JQuery 插件详解

    转载自:http://blog.sina.com.cn/s/blog_6154bf970101jam7.html 如今做web开发,jquery 几乎是必不可少的,就连vs神器在2010版本开始将Jq ...

  6. 编写jQuery 插件

    编写jQuery Plugin,要设置默认值,并允许用户修改默认值,或者运行是传入其他值. 最终,我们得出编写一个jQuery插件的原则: 给$.fn绑定函数,实现插件的代码逻辑: 插件函数最后要 r ...

  7. 自己编写jQuery插件之表单验证

    自己编写jQuery插件之表单验证 吐个嘈先:最近状态不咋滴,真是什么都不想干,不想上班,做什么都没动力,觉得没意思.不想这样,不想这样,快让这种情绪消失吧,忽忽.... 表单验证在项目中用的还是比较 ...

  8. 自己编写jQuery插件之Tab切换

    自己编写jQuery插件之 Tabs切换 jquery ui 带有Tabs切换插件,但其css样式太难维护,引用的东西太多,因此就自己写了个. 起初我Html代码架子是这样的: <div cla ...

  9. 编写jQuery插件的方法和注意点

    编写jQuery插件的方法和注意点 插件的种类 jQuery的插件主要分为3种类型. 1. 封装对象方法的插件 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进行操作,是最常见的 ...

随机推荐

  1. vue-resource 知识点

    vue-resource 发送json到后端: Content-Type字段的类型是application/json,就会有options请求. http://www.ruanyifeng.com/b ...

  2. Notepad++ 删除空白行的方法

    Notepad++ 是我特别喜欢的一款编程工具.在安装后就可以轻松使用了.Notepad++ 上提供了很多方便的插件以实现更多的扩展,当然自身已经比较强大好用了.如果你遇到文本中间有大量的空白行的话, ...

  3. sklearn的画图

    from sklearn.metrics import roc_curve fpr, tpr, thresholds=roc_curve(y_train_5, y_scores) fpr, tpr & ...

  4. Microsoft Dynamics CRM 2011 中 SQL 语句总结

    一.查询用户和团队 插入的类型:OwnerIdType 可以为用户或团队: 1.团队: select top 1 ObjectTypeCode from metadataschema.entity w ...

  5. 查看 linux cpu 、内存、服务器型号和序列号、磁盘、raid 的信息

    yum -y install dmidecode 查看cpu的型号: 查看cpu的颗数:dmidecode -t processor |grep "Version"dmidecod ...

  6. C语言扩展动态内存报错:realloc(): invalid next size: 0x0000000002365010 ***

    晚上被这个内存扩展崩溃的问题折腾的有点崩溃,当答案揭晓的那一刻,恍然大悟,原来如此简单. 练习题目:输入一个字符串,根据字母进行排序,说白了就是一个简单的冒泡 #include <stdio.h ...

  7. fckeditor 配置

    因为下载下来的压缩包里面有包含很多在我们使用时,用不到的,不删除也行.看个人喜好下面以PHP为例,进行程序瘦身 删除所有”_”开头的文件和文件夹   删除FCKeditor的目录下:   fckedi ...

  8. OOD与OOP的思想的感悟

    Walking on water and developing software from a specification are easy if both are frozen) -Edward V ...

  9. gem install redis报错解决

    在执行gem install redis时 提示:    gem install redis    ERROR:  Error installing redis:            redis r ...

  10. windows任务计划程序 坑