【发布时间】: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