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 相关文章推荐
基于jquery的关于动态创建DOM元素的问题
Dec 24 Javascript
JQuery扩展插件Validate 2通过参数设置验证规则
Sep 05 Javascript
JavaScript中的迭代器和生成器详解
Oct 29 Javascript
javascript实现简单的全选和反选功能
Jan 05 Javascript
为什么JavaScript没有块级作用域
May 22 Javascript
JS简单获取客户端IP地址的方法【调用搜狐接口】
Sep 05 Javascript
node.js实现登录注册页面
Apr 08 Javascript
详解如何去除vue项目中的#——History模式
Oct 13 Javascript
在vue-cli中组件通信的方法
Dec 16 Javascript
vue.js实现的经典计算器/科学计算器功能示例
Jul 11 Javascript
angularJs中json数据转换与本地存储的实例
Oct 08 Javascript
JS实现横向跑马灯效果代码
Apr 20 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的chr和ord函数实现字符加减乘除运算实现代码
2011/12/05 PHP
Yii框架防止sql注入,xss攻击与csrf攻击的方法
2016/10/18 PHP
Javascript 中介者模式实例
2009/12/16 Javascript
javascript 二分法(数组array)
2010/04/24 Javascript
让你的CSS像Jquery一样做筛选的实现方法
2011/07/10 Javascript
在Windows上安装Node.js模块的方法
2011/09/25 Javascript
一个不错的js html页面倒计时可精确到秒
2014/10/22 Javascript
javascript与Python快速排序实例对比
2015/08/10 Javascript
javascript实现无法关闭的弹框
2016/11/27 Javascript
node.js发送邮件email的方法详解
2017/01/06 Javascript
jQuery实现获取table中鼠标click点击位置行号与列号的方法
2017/10/09 jQuery
js循环map 获取所有的key和value的实现代码(json)
2018/05/09 Javascript
浅析JS中回调函数及用法
2018/07/25 Javascript
angularjs手动识别字符串中的换行符方法
2018/10/02 Javascript
jQuery实现网页拼图游戏
2020/04/22 jQuery
vuex 动态注册方法 registerModule的实现
2019/07/03 Javascript
JQuery 实现文件下载的常用方法分析
2019/10/29 jQuery
9种方法优化jQuery代码详解
2020/02/04 jQuery
javascript设计模式 ? 状态模式原理与用法实例分析
2020/04/22 Javascript
element-plus一个vue3.xUI框架(element-ui的3.x 版初体验)
2020/12/02 Vue.js
Python使用爬虫爬取静态网页图片的方法详解
2018/06/05 Python
pandas DataFrame 交集并集补集的实现
2019/06/24 Python
python实现KNN分类算法
2019/10/16 Python
python实现不同数据库间数据同步功能
2021/02/25 Python
Sunglasses Shop瑞典:欧洲领先的太阳镜网上商店
2018/04/22 全球购物
Craghoppers德国官网:户外和旅行服装
2020/02/14 全球购物
COSETTE官网:奢华,每天
2020/03/22 全球购物
英国领先的高级美容和在线皮肤诊所:Face the Future
2020/06/17 全球购物
文科毕业生自荐书范文
2014/04/17 职场文书
八一建军节演讲稿
2014/09/10 职场文书
加强机关作风建设心得体会
2014/10/22 职场文书
音乐教师个人工作总结
2015/02/06 职场文书
保险内勤岗位职责
2015/04/13 职场文书
李强感恩观后感
2015/06/17 职场文书
CSS3实现指纹特效代码
2022/03/17 HTML / CSS
Go gorilla/sessions库安装使用
2022/08/14 Golang