所以我知道污染引用窗口的全局命名空间是件坏事,特别是如果你有多个第三方引用。所以这是不可取的:
window.someObject = someObject;
这将在任何地方引用它。如果我这样使用它会怎么样?
var MyApplication = window.MyApplication;
MyApplication.someObject = someObject;
当然,使用此方法需要在每个需要访问此创建的命名空间的模块顶部引用MyApplication = window.MyApplication
。所以回到我的问题。这是否可以在不污染窗口全局命名空间的情况下提供全局访问?
答案 0 :(得分:1)
如果您想要全局访问,则需要具有某种全局性。这是做到这一点的常用方法。
的示例_jQuery = window.jQuery,
_$ = window.$,
我相信所有大框架都是这样做的。我认为用一个容器变量污染全局命名空间是完全可以接受的。
答案 1 :(得分:0)
您也可以(在全球范围内):
(function(lib) {
// in here, lib references window.MyApplication
...
}(MyApplication));
因此,您可以轻松更改传入的对象。