1

我一直在使用这种模式来组织我的 JavaScript 中使用的常用方法,但并没有真正理解它。

(function(newSubNamespace) {
 newNamespace.someNewFunction = function(args){
    //do something
 }
}(window.appNamespace.newSubNamespace = 
  window.appNamespace.newSubNamespace || {},
  jQuery));

我知道这是添加定义的函数someNewFunctionwindow.appNamespace.newSubNamespace如果window.appNamespace.newSubNamespace || {}它尚不存在则创建 newSubNamespace,但我无法弄清楚该,jQuery位的作用。

此外,如果我必须命名它,它会不会只是扩展?

我一直在使用这种模式,但没有完全理解它,想了解更多。

4

2 回答 2

3

在这种, jQuery特殊情况下似乎没有用(除非您使用arguments对象访问第二个参数),因为您的外部匿名函数不接受第二个形式参数。

通常,执行此操作的代码可能看起来像

(function(something, $) {
   ...
}(whatever, jQuery));

以便将 jQuery 分配给$匿名函数内部的形式参数(这里是“IIFE”:立即调用的函数表达式)。$当其他库也可能尝试使用该$标识符时,这被用作在 IIFE 中为 jQuery 保留的一种方式。

于 2013-09-16T20:13:30.303 回答
1

我猜你从其他地方复制了这个,你错过了匿名函数的第二个参数。即应该是

(function(newSubNamespace, $) {
...

您这样做只是为了确保$符号是 jQuery 而不是其他东西。

于 2013-09-16T20:14:28.517 回答