(function(global,factory){
factory(global)
}(typeof window!=='undefined'?window:this,function(){
var
jQuery=function(){
return {}
}
window.jQuery=window.$=jQuery;
return jQuery;
}))
1.整体架构是一个匿名函数:
通过定义一个匿名函数,创建了一个“私有”的命名空间,该命名空间的变量和方法,不会破坏全局的命名空间。这点非常有用也是一个JS框架必须支持的功能,jQuery被应用在成千上万的JavaScript程序中,必须确保jQuery创建的变量不能和导入他的程序所使用的变量发生冲突。
2.该匿名函数传入了2个参数
第1个是全局变量,如果全局是window就传入window,如果不是window(node的全局是global)就传入this。第2个参数是一个工厂函数,返回jQuery对象
3.为什么要传入window(或全局变量)
通过传入window变量,使得window由全局变量变为局部变量,当在jQuery代码块中访问window时,不需要将作用域链回退到顶层作用域,这样可以更快的访问window;另外1个好处是:将window作为参数传入,可以在压缩代码时进行优化
(function(window){
window.name='meinan'
}(window))
代码压缩后:
(function(a){a.name="meinan"})(window);//window -> a