我一直在使用这种模式来组织我的JavaScript中使用的常用方法,但却没有真正理解它。
(function(newSubNamespace) {
newNamespace.someNewFunction = function(args){
//do something
}
}(window.appNamespace.newSubNamespace =
window.appNamespace.newSubNamespace || {},
jQuery));
我知道这是将someNewFunction
定义的函数添加到window.appNamespace.newSubNamespace
并且window.appNamespace.newSubNamespace || {}
创建newSubNamespace(如果它还不存在),但我无法弄清楚是什么,jQuery
位。
此外,如果我不得不说出这个,它会延伸吗?
我一直在使用这种模式而没有完全理解它,并希望了解更多。
答案 0 :(得分:3)
, jQuery
在这种特殊情况下似乎没用(除非您使用arguments
对象访问第二个参数),因为您的外部匿名函数不会采用第二个正式参数。
通常,执行此操作的代码可能类似于
(function(something, $) {
...
}(whatever, jQuery));
以便将jQuery分配到匿名函数内的正式参数$
(这里,“IIFE”:立即调用函数表达式)。当其他库也可能尝试使用$
标识符时,这用作在IIFE中为jQuery保留$
的方法。
答案 1 :(得分:1)
我猜你从其他地方复制了这个,你错过了匿名函数的第二个参数。即它应该是
(function(newSubNamespace, $) {
...
您这样做是为了确保 $ 符号是jQuery而不是其他内容。