它创建一个函数并立即调用它,传入window
. 该函数接收一个名为的参数window
,然后在其上创建一个空对象,该对象既可以作为window
调用的属性,也可以test
作为局部变量调用test
。然后它通过调用一个函数来创建一个对象new
,并将该对象分配给test.utils
.
我不明白最后一部分的目的是什么(窗口);...
它在您引用的代码中实际上没有任何用途,因为传递给主(外部)函数的符号window
与接收它的参数的名称相同。如果他们的名字不同,那么它会有一个目的,例如:
(function(wnd) {
})(window);
这将window
在函数中作为wnd
.
或者为什么 utils 函数被指定为新函数。
utils
不会是一个函数(至少,除非你替换的代码...
正在做一些非常奇怪的事情),它将是一个通过调用该函数创建的对象。
整个事情可以更清楚地重写:
(function(window) {
var test;
test = {};
window['test'] = test;
test.utils = new NiftyThing();
function NiftyThing() {
}
})(window);
仍然window
无缘无故地做这件事,但希望它能清楚地说明该new(function() { ... })();
位在做什么。