jQuery创建插件的代码分析


Posted in Javascript onApril 14, 2011

创建jQuery插件,基本的格式是上面这段代码:

(function ($) 
{ 
//add code here 
})(jQuery)

我们怎么理解?
第一步:function ($){}定义了一个匿名的函数,有一个参数,$是参数名,和其他的参数名没什么区别。
第二步:(function ($){})(jQuery)
我们要执行一个匿名函数的时候,通常用var func = function ($) { },然后func(参数)这样的形式。这里func就是一个Function对象。但更简洁的(function ($) {}),这时用括号,也同样返回括号的内容,也是一个function对象。我们再执行就可以了:(function ($) {})(jQuery)
第三步:这时我们实际上是执行上面定义的匿名函数,执行的时候为该匿名函数提供一个参数值:jQuery。
第四步:所以最终上面的表达等价于:
var func = function($) { };
func(jQuery);
即定义匿名函数,并以jQuery为参数执行一次。

这里的作用是什么呢?
1、解决$符号冲突问题
jQuery中我们用$来代替jQuery,这是为了简化写法。但$这个符号有时候会冲突。
在上面匿名函数的代码中,我们可以习惯性的用$来写,但执行的时候会用jQuery来代替,这就避免了变量的冲突。
2、解决闭包问题:
一般直接写在脚本里的函数,执行后其中未销毁的变量是继续存在,并能够正常访问的。这个和我们一向理解的函数私有变量是不符的。
但我们用这种方式,将需要的所有函数都包在这个匿名函数里,则其中的局部变量,在外部将不能访问,变相的起到了创建私有的局部变量的作用。只有this.开头的那些成员,才是插件外部可以访问的。

Javascript 相关文章推荐
img标签中onerror用法
Aug 13 Javascript
基于jquery的bankInput银行卡账号格式化
Aug 22 Javascript
JavaScript中获取纯正的undefined的方法
Mar 06 Javascript
JS简单编号生成器实现方法(附demo源码下载)
Apr 05 Javascript
jquery实现无刷新验证码的简单实例
May 19 Javascript
jQuery grep()方法详解及实例代码
Oct 30 Javascript
基于cookie实现zTree树刷新后展开状态不变
Feb 28 Javascript
详解用函数式编程对JavaScript进行断舍离
Sep 18 Javascript
vue.js 打包时出现空白页和路径错误问题及解决方法
Jun 26 Javascript
Vue+ElementUI项目使用webpack输出MPA的方法
Aug 27 Javascript
node.JS路径解析之PATH模块使用方法详解
Feb 06 Javascript
微信小程序利用button控制条件标签的变量问题
Mar 15 Javascript
Jquery公告滚动+AJAX后台得到数据
Apr 14 #Javascript
jquery中eq和get的区别与使用方法
Apr 14 #Javascript
基于jquery的blockui插件显示弹出层
Apr 14 #Javascript
强大的jquery插件jqeuryUI做网页对话框效果!简单
Apr 14 #Javascript
让textarea自动调整大小的js代码
Apr 12 #Javascript
javascript算法学习(直接插入排序)
Apr 12 #Javascript
jQuery实战之仿淘宝商城左侧导航效果
Apr 12 #Javascript
You might like
PHP 小心urldecode引发的SQL注入漏洞
2011/10/27 PHP
PHP记录搜索引擎蜘蛛访问网站足迹的方法
2015/04/15 PHP
php实现阿拉伯数字和罗马数字相互转换的方法
2015/04/17 PHP
php利用ob_start()清除输出和选择性输出的方法
2018/01/18 PHP
使用新的消息弹出框blackbirdjs
2008/10/16 Javascript
再论Javascript的类继承
2011/03/05 Javascript
jquery验证手机号码、邮箱格式是否正确示例代码
2013/07/28 Javascript
灵活的理解JavaScript中的this指向
2016/02/25 Javascript
js实现随机数字字母验证码
2017/06/19 Javascript
JS+canvas动态绘制饼图的方法示例
2017/09/12 Javascript
vue.js  父向子组件传参的实例代码
2017/10/29 Javascript
JS简单获取并修改input文本框内容的方法示例
2018/04/08 Javascript
vue2单元测试环境搭建
2018/05/24 Javascript
javascript(基于jQuery)实现鼠标获取选中的文字示例【测试可用】
2019/10/26 jQuery
JS实现关闭小广告特效
2021/01/29 Javascript
原生js实现弹窗消息动画
2020/11/20 Javascript
Python读取mp3中ID3信息的方法
2015/03/05 Python
python循环监控远程端口的方法
2015/03/14 Python
python获得linux下所有挂载点(mount points)的方法
2015/04/29 Python
Python实现在tkinter中使用matplotlib绘制图形的方法示例
2018/01/18 Python
python写入并获取剪切板内容的实例
2018/05/31 Python
python3爬虫之设计签名小程序
2018/06/19 Python
Python/ArcPy遍历指定目录中的MDB文件方法
2018/10/27 Python
Python 单元测试(unittest)的使用小结
2018/11/14 Python
Python基于WordCloud制作词云图
2019/11/29 Python
Python tkinter和exe打包的方法
2020/02/05 Python
scrapy处理python爬虫调度详解
2020/11/23 Python
新百伦折扣店:Joe’s New Balance Outlet
2016/08/20 全球购物
Hotels.com英国:全球领先的酒店住宿提供商
2019/01/24 全球购物
Vilebrequin美国官方网上商店:法国豪华泳装品牌
2020/02/22 全球购物
毕业生在校学习的自我评价分享
2013/10/08 职场文书
质检部岗位职责
2013/11/11 职场文书
行政主管岗位职责
2013/11/18 职场文书
办公室助理岗位职责
2013/12/25 职场文书
经济纠纷起诉状
2015/05/20 职场文书
大学学生会主席竞选稿怎么写?
2019/08/19 职场文书