【问题标题】:Should I have a global object, javascript?我应该有一个全局对象,javascript吗?
【发布时间】:2013-06-03 21:12:01
【问题描述】:

我正在建立一个用于教育目的的图书馆;我的库中有很多模块。

我的一个模块在我的整个应用程序中都非常需要。将这个对象存储在一个可以从其他需要它的对象内部引用的单例全局对象中更好,还是将它作为属性提供给每个需要它的对象?

我知道这可能有很多固执己见的答案,但这仍然是一个我正处于十字路口的问题。

【问题讨论】:

  • 拥有全局对象实例与拥有单例不同。
  • 你能提供一个想象的案例和用法的示例代码吗?
  • 如果它是一个您会经常访问的对象,只需将其放入全局命名空间(当然要使用唯一的名称)。当你引用它时,只要确保使用 window.obj 而不是 obj 来加快查找速度。
  • 理想情况下,尝试拥有一个全局对象,然后将所有模块挂在上面。即var App = { Modules: {} }; 然后App.Modules.Foo = _whatever_;

标签: javascript design-patterns


【解决方案1】:

您提到的第二个选项本质上是依赖注入。因此,您可以通过模拟注入的对象来获得代码可测试性的内在优势。

如果此模块不需要“其他”第 3 方模块从外部访问,您也可以尽可能避免全局污染。如果你可以将它注入到你自己的所有模块中,那么你应该不需要公开它。

这是我的看法,将更高级别的设计模式带入 Javascript 世界只会让我们变得更好,并且非常重视依赖注入。

【讨论】:

    猜你喜欢
    • 2010-12-23
    • 1970-01-01
    • 1970-01-01
    • 2021-10-14
    • 2016-05-01
    • 2021-07-31
    • 2019-08-26
    • 2015-05-27
    • 1970-01-01
    相关资源
    最近更新 更多