2 bogexueqianduan bogexueqianduan 于 2016.03.23 16:28 提问

jQuery插件开发:(function($){})(jQuery); 作用求解!!

开发jQuery插件的时候会用(function($){})(jQuery); 这个闭包函数来包裹,
因为这样写有以下三个好处:
1. 避免全局依赖
2. 避免第三方破坏
3. 兼容jQuery操作符$和jQuery

首先,上面那三个作用是什么意思?
另外,为什么用这个闭包函数包裹就可以达到上面的作用?

先谢过大家~~

3个回答

caozhy
caozhy   Ds   Rxr 2016.03.23 16:41
已采纳

意思就是插件不会污染顶级对象和全局变量,因为两个插件,或者多个js库同时使用,万一有变量函数对象是同名的就会产生冲突。

showbo
showbo   Ds   Rxr 2016.03.23 18:12

第三个就是防止第三方重新定义过$导致$被污染而不是一定是指向jquery

caozhy
caozhy   Ds   Rxr 2016.03.23 16:42

闭包使得内部可以访问外面的变量对象,同时内部定义的又不会被外面看见。

bogexueqianduan
bogexueqianduan 因为即使不传参数也可以使用jQuery操作符,所以我不理解为什么要传jQuery对象作为参数进去
2 年多之前 回复
bogexueqianduan
bogexueqianduan 谢谢懂了,前两个都懂了,那第三个要怎么解释呢?
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
jquery插件开发全指南
这大概是自己在这个上面的最后一个博客了,自己的博客搭建的差不多了,现在在写一个markdown支持插件,写好了之后将来就要迁移到自己的博客上去了,这个博客还会经常来看,毕竟记录了大二大三自己所走诸多的弯路。(当然最后这篇文章不是自己写的,从网上找来整理了一下) jQuery插件的开发包括两种:一种是类级别的插件开发,即给jQuery添加新的全局函数,相当于给jQuery类本身添加方法。jQuery的
jQuery插件开发模式(组件封装)
在项目开发过程中,由于jQuery有较好的实用性,所以都用得非常多,而在项目开发时,某个功能(代码)使用很频繁被多个地方调用,那么就可以借助jQuery插件提供的组件封装方法高,来封装一些使用频率较的功能。 JQuery中组件开发方式主要有两种: 通过$.extend()来扩展jQuery 通过$.fn 向jQuery添加新的方法 还有 $.widget()
jquery 插件开发
jquery 插件开发 jquery 插件开发教程 jquery 插件开发 jquery 插件开发教程
(function($){})(jquery)的意义
这里实际上是匿名函数 function(arg){...} 这就定义了一个匿名函数,参数为arg 而调用函数时,是在函数后面写上括号和实参的,由于操作符的优先级,函数本身也需要用括号,即: (function(arg){...})(param) 这就相当于定义了一个参数为arg的匿名函数,并且将param作为参数来调用这个匿名函数 而(function($){...}) (
jQuery插件开发-(function($){...})(jQuery)
这里实际上是匿名函数 function(arg){...} 这就定义了一个匿名函数,参数为arg 而调用函数 时,是在函数后面写上括号和实参的,由于操作符的优先级,函数本身也需要用括号,即: (function(arg){...})(param) 这 就相当于定义了一个参数为arg的匿名函数,并且将param作为参数来调用这个匿名函数 而(function($){...})
Jquery 动态事件绑定(.live()事件)
jQuery动态事件绑定,JQuery api中的 .live()事件
jquery中$的意义以及$(function(){})等几种初始化
$(function() { // Handler for .ready() called. }); 在jQuery文件里面有定义$=jQuery;用$("#id")和用jQuery("#id")是一样的。只是$在其它的js框架里面也被用过,可能出现重复。 var Hello = jQuery.noConflict(); 这样以后就可以用Hello做前缀了 Hello("tx
jQuery自己编写插件()
引言:   在项目中不同页面经常要用到已经写好的交互,比如弹窗,比如下拉菜单,比如选项卡,比如删除... 此时如果每次都把代码copy一份无疑是一件比较麻烦并且无趣的事情,而且个人认为有些low了,我们可是要追寻 高大上的90后有为青年呢~可是该如何高大上呢?这时jQuery自定义插件开发来了,第一次听到插件开发觉得如此happy, 遂动手网上查找资料进行学习,如下,我用自己的语言
jQuery中$(function(){})与(function($){})(jQuery)、$(document).ready(function(){})等的区别详细讲解
1、(function($) {…})(jQuery); 1)、原理: 这实际上是匿名函数,如下: function(arg){…} 这就定义了一个匿名函数,参数为arg 而调用函数时,是在函数后面写上括号和实参的,由于操作符的优先级,函数本身也需要用括号,即: (function(arg){…})(param) 这就相当于定义了一个参数为arg的匿名函数,并且将pa
JavaScript学习总结(四)——jQuery插件开发与发布
jQuery插件就是以jQuery库为基础衍生出来的库,jQuery插件的好处是封装功能,提高了代码的复用性,加快了开发速度,现在网络上开源的jQuery插件非常多,随着版本的不停迭代越来越稳定好用,在jQuery官网有许多插件: 一、插件开发基础 1.1、$.extend 在jQuery根命名空间下直接调用的方法可以认为是jQuery的静态方法或属性,常常使用$.方法名来调用,使用$.