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 相关文章推荐
JavaScript 数组的 uniq 方法
Jan 23 Javascript
Javascript 自定义类型方法小结
Mar 02 Javascript
js Html结构转字符串形式显示代码
Nov 15 Javascript
js控制的遮罩层实例介绍
May 29 Javascript
全面解析JavaScript中的valueOf与toString方法(推荐)
Jun 14 Javascript
jQuery插件Flexslider实现图片轮播、图文结合滑动切换效果
Apr 16 Javascript
JavaScript的==运算详解
Jul 20 Javascript
JS正则替换掉小括号及内容的方法
Nov 29 Javascript
原生js开发的日历插件
Feb 04 Javascript
通过jquery的ajax请求本地的json文件方法
Aug 08 jQuery
JavaScript设计模式之享元模式实例详解
Jan 17 Javascript
Vue项目页面跳转时浏览器窗口上方显示进度条功能
Mar 26 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
利用curl抓取远程页面内容的示例代码
2013/07/23 PHP
destoon常用的安全设置概述
2014/06/21 PHP
php 获取文件行数的方法总结
2016/10/11 PHP
JavaScript 获取用户客户端操作系统版本
2009/08/25 Javascript
jQuery Clone Bug解决代码
2010/12/22 Javascript
js鼠标滑轮滚动事件绑定的简单实例(兼容主流浏览器)
2014/01/14 Javascript
用js替换除数字与逗号以外的所有字符的代码
2014/06/07 Javascript
node.js中的querystring.unescape方法使用说明
2014/12/10 Javascript
在JS中操作时间之getUTCMilliseconds()方法的使用
2015/06/10 Javascript
JavaScript必知必会(五) eval 的使用
2016/06/08 Javascript
实现easyui的datagrid导出为excel的示例代码
2016/11/10 Javascript
JavaScript仿微博输入框效果(案例分析)
2016/12/06 Javascript
vue+php实现的微博留言功能示例
2019/03/16 Javascript
详解微信小程序「渲染层网络层错误」的解决方法
2021/01/06 Javascript
Python os.rename() 重命名目录和文件的示例
2018/10/25 Python
python opencv对图像进行旋转且不裁剪图片的实现方法
2019/07/09 Python
mac使用python识别图形验证码功能
2020/01/10 Python
解决Python logging模块无法正常输出日志的问题
2020/02/21 Python
python关于倒排列的知识点总结
2020/10/13 Python
利用python查看数组中的所有元素是否相同
2021/01/08 Python
只要五步 就可以用HTML5/CSS3快速制作便签贴特效(图)
2012/06/04 HTML / CSS
Linux如何为某个操作添加别名
2013/03/01 面试题
语文教学感言
2014/02/06 职场文书
幼儿园教师岗位职责
2014/03/17 职场文书
机关办公室岗位职责
2014/04/16 职场文书
项目投资建议书
2014/05/16 职场文书
园林系毕业生求职信
2014/06/23 职场文书
学校领导班子对照检查材料
2014/09/24 职场文书
党员个人整改措施
2014/10/24 职场文书
护士求职自荐信
2015/03/25 职场文书
酒店前台岗位职责
2015/04/16 职场文书
新郎父母婚礼致辞
2015/07/27 职场文书
导游词之潮音寺
2019/09/26 职场文书
Go语言实现Snowflake雪花算法
2021/06/08 Golang
Log4j.properties配置及其使用
2021/08/02 Java/Android
MYSQL 表的全面总结
2021/11/11 MySQL