我只是注意到 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;
})();
})(...);
只是想一下,有人知道这种变化(包装技术)有什么好处吗?
最佳答案
我认为这本身并不完全是“库包装” - 外部匿名函数仍然包装整个库。我认为您在这里看到的是 jQuery 代码的部分,特别是定义核心功能的部分,使用 Module pattern将部分代码保留在有限的范围内。
例如,如果您查看 the core.js source file ,您可以看到第 4-77 行定义了大量变量 - 您可以明白为什么您不希望所有这些变量都保留在库其余部分的变量范围中。模块模式有助于最大限度地减少大量代码中的冲突和困惑,我猜测他们在 v.1.4 之后开始使用这种模式的原因是代码库变得更大、更复杂。因此,我认为您在最终库中看到的并不是从优化的角度来看更严格的代码,而是从维护的角度来看更健壮的代码。
我不是 jQuery 开发人员,所以当然这都是猜测。但这似乎是一个合理的解释。
关于jquery - 新的 jQuery 库包装技术的好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7774988/