在Javascript中使用惰性初始化和命名空间

时间:2012-12-19 15:26:03

标签: javascript namespaces javascript-namespaces

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

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

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

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

或者我可以在define(alias, factory)import(alias)中将其拆分。更易于阅读,更加污染全球空间。

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

1 个答案:

答案 0 :(得分:0)

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