存储像这样的全局变量会有什么影响吗?

时间:2013-07-25 01:30:14

标签: javascript window global

所以我知道污染引用窗口的全局命名空间是件坏事,特别是如果你有多个第三方引用。所以这是不可取的:

window.someObject = someObject;

这将在任何地方引用它。如果我这样使用它会怎么样?

var MyApplication = window.MyApplication;
MyApplication.someObject = someObject;

当然,使用此方法需要在每个需要访问此创建的命名空间的模块顶部引用MyApplication = window.MyApplication。所以回到我的问题。这是否可以在不污染窗口全局命名空间的情况下提供全局访问?

2 个答案:

答案 0 :(得分:1)

如果您想要全局访问,则需要具有某种全局性。这是做到这一点的常用方法。

来自jQuery source code

的示例
_jQuery = window.jQuery,
_$ = window.$,

我相信所有大框架都是这样做的。我认为用一个容器变量污染全局命名空间是完全可以接受的。

答案 1 :(得分:0)

您也可以(在全球范围内):

(function(lib) {

  // in here, lib references window.MyApplication
  ...

}(MyApplication));

因此,您可以轻松更改传入的对象。