【问题标题】:Using lazy initialisation with namespaces in Javascript在 Javascript 中对命名空间使用延迟初始化
【发布时间】:2012-12-06 23:52:22
【问题描述】:

我在 JavaScript、命名空间和缩小/连接方面遇到了几个问题。我无法控制(至少我不想控制)文件连接的顺序。使用命名空间函数,该函数在给定字符串(例如 'com.example.ExampleClass')时仅返回一个对象,当我在另一个字符串中需要它时,可能不会定义一个“类”。

假设我有一个 DocumentProvider 对象,它需要来自 EventDispatcher 的功能。但是,在我当前的设置中,DocumentProvider 在 EventDispatcher 之前连接。我想在原型上定义这个功能,所以不能在构造函数中扩展。

所以,我建议的解决方案是使用延迟初始化:

  • 定义顶级namespace(alias, factory)函数
  • 在命名空间中使用伪重载将工厂分配给 指定名称或返回工厂创建的对象

或者,我可以将其拆分为 define(alias, factory)import(alias)。更好的可读性,更污染全局空间。

我的问题是:我是否过度设计?这个问题有更好、更简单、更“标准”的解决方案吗?将命名空间功能(具有不同的实现)添加到语言中的风险是什么?

【问题讨论】:

    标签: javascript namespaces javascript-namespaces


    【解决方案1】:

    查看RequireJS 可能会为您节省大量时间。

    【讨论】:

      猜你喜欢
      • 2020-05-10
      • 1970-01-01
      • 2011-11-17
      • 1970-01-01
      • 2020-10-08
      • 2017-11-11
      • 1970-01-01
      • 2014-08-23
      • 2012-11-14
      相关资源
      最近更新 更多