日期:2014-05-16  浏览次数:20406 次

关于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对象作为实参,在函数内部以$表示,防止$别别的脚本干扰