我在 JavaScript、命名空间和缩小/连接方面遇到了几个问题。我无法控制(至少我不想控制)文件连接的顺序。使用命名空间函数,该函数在给定字符串(例如 'com.example.ExampleClass')时仅返回一个对象,当我在另一个字符串中需要它时,可能不会定义一个“类”。
假设我有一个 DocumentProvider 对象,它需要来自 EventDispatcher 的功能。但是,在我当前的设置中,DocumentProvider 在 EventDispatcher 之前连接。我想在原型上定义这个功能,所以我不能在构造函数中扩展它。
所以,我提出的解决方案是使用延迟初始化:
- 定义顶层
namespace(alias, factory)
函数 - 在命名空间中使用伪重载将工厂分配给指定名称或返回工厂创建的对象
或者,我可以将其拆分为define(alias, factory)
和import(alias)
。更好的可读性,更污染全局空间。
我的问题是:我是否过度设计?这个问题有更好、更简单、更“标准”的解决方案吗?将命名空间功能(具有不同的实现)添加到语言中的风险是什么?