这里是JavaScript的一个常见的做法:JavaScript风格:我应该将哪些东西作为参数传递给我的命名空间函数?
(function($) {
...code...
})(jQuery);
我理解的包装函数(它可以防止全局命名空间的污染),但许多库(如jQuery,下划线等)已经定义了短名称($
和_
)分别在全球范围内供我使用。我不知道这种方法的优点是什么。只需要将jQuery
重命名为更短的内容?防止我覆盖$
?以后更容易换入另一个图书馆吗?我想这些都不是真的令我信服。
而且,我也看到了这一点:
(function(_) {
...code...
})(_);
即使没有这里重命名。我已经看到:
(function(global) {
...code...
})(this); // or window, perhaps
直接使用window
有什么问题?
因此,这里是我要问:
- 请问这种做法有名字吗?
- 这种做法有什么优点?
- 我是否应该总是传递我正在使用的库,而不是直接使用它们?
- 我是否应该通过
this
或window
作为全球范围的参考?
为什么你列出的理由似乎没有说服力?你真的需要多少说服力?这只是一个简单的函数调用,需要很少的成本。 – 2012-07-25 02:14:30
他们似乎不*真的*令人信服,因为这些原因都与我的小项目无关。重命名为更短的东西?已经有'$'。防止我覆盖'$'?不是我曾经做过的事情。之后在另一个图书馆交换?直接替换库通常使用相同的名称来为程序员解决这个问题。 ......从防守编码的角度来看,所有这些都可能有优势。 – Calvin 2012-07-25 02:46:30