我只是注意到它的库包装技术中的jQuery源有一些变化。我记得在1.4版本中他们使用了这个库包装:
(function(...){
var jQuery = function(){
// some code
}
// other code
})(...);
现在在1.6.x中:
(function(...){
var jQuery = (function(){
var jQuery = function(){
// some code
}
// other code
return jQuery;
})();
})(...);
只是一个想法,有没有人碰巧知道这种变化有什么好处(包装技术)?
答案 0 :(得分:0)
我认为这本身并不是“库包装” - 外部匿名函数仍在包装整个库。我认为你在这里看到的是jQuery代码的一部分,特别是定义核心功能的部分,使用Module pattern将部分代码保留在有限的范围内。
例如,如果你看the core.js source file,你可以看到第4-77行定义了大量变量 - 你可以看到为什么你不希望所有这些变量在变量范围内图书馆的其余部分。模块模式有助于最大限度地减少大量代码中的冲突和混淆,并且我猜想他们在v.1.4之后开始使用这种模式的原因是代码库变得更大,更复杂。所以我认为你在最终库中看到的并不是从优化角度来看更严格的代码,而是从维护的角度看更强大的代码。
我不是一个jQuery开发人员,所以当然这都是猜测。但这似乎是一个合理的解释。