关于js封装的一个问题
本人想学习自己封装控件的快感,模仿别人时遇到一个问题,求解答?
如下(这段是表示什么意思):
(function($){
})(jQuery);
------解决方案--------------------在函数内使用jquery库的$()方法,防止类库的冲突
------解决方案--------------------避免$给别的框架占用了。$是最各种框架最喜欢用的命名。
(function(){
//代码
window.$$$=xx;
})();
javascript立即执行函数,在这里面创建自由变量或私有子function不会与外界冲突,一般只会暴露一个变量在外面,如上面代码中的$$$
------解决方案--------------------拆开这段代码就是:
var f = function($){
}
f(jQuery);
因为很多框架声明了名称为 $ 的全局变量,所以如果这样做了之后,在 f 这个方法体里访问 $ 就是访问的 $ 就是参数传进来的这个局部变量,而调用这个方法时传递的是jQuery这个全局变量,所以 f 方法里的 $ 就是传进来的jQuery了,不用担心混淆。。。
------解决方案--------------------先解释下
(function(){})();这个东西吧,
var a=1+(1+2);
1+2=3//先计算括号返回3
1+3=4//返回4赋值给a
那么
(function(){})//计算括号里面的返回一个函数
(function(){})()//直接执行这个括号先计算的函数
然后
(function($){ })(jQuery);
就相当于 在执行函数的时候传入jQuery对象作为实参,在函数内部以$表示,防止$别别的脚本干扰