为什么一些程序员传入全局window
对象,我理解这是为了更好的性能和最小化的好处,还有来自完全相同的全局空间window
的其他依赖对象/函数但传入通过另一个参数?
但是他们也使用了来自window
的功能,他们没有明确传递,例如setTimeout()
。
(function (dependency1, dependency2, dependency3, dependency4) {
'use strict';
//body
window.setTimeout(function() { // <--
//body
}, 1000);
//etc.
}(window, window.document, window.AjaxRequest, window.util.padNumber)); // <--
使用top变体对以下内容有什么好处,基本上仍然可以访问相同的依赖项?
(function (window) {
'use strict';
//body
window.setTimeout(function() {
//body
}, 1000);
//etc.
}(window));
答案 0 :(得分:2)
答案 1 :(得分:1)
这样做是为了坚持OPEN / CLOSE范例。
开放/封闭原则陈述&#34;软件实体(类,模块, 功能等)应该是开放的,但是关闭 修改&#34;
要关闭修改,请将依赖项作为参数传递。这允许程序员即时更改它,而不必担心函数中没有使用它。