我正在开发一个 javascript 库,并希望在不同模块中的 Javascript 对象上存储可选方法组。
该库有两个模块,我们称它们为 ModuleA 和 ModuleB。ModuleA 导出一个类对象,我们称之为 ClassA,它只有最小的核心功能。ModuleB 定义了一组可选方法,这些方法要设置在 ClassA 的原型上。
在不在库中的第三个模块 ModuleC 中,我想要以下内容:
如果我只导入 ModuleA 并实例化 ClassA,我知道我可以使用“InstanceA.MethodA(...)”访问 InstanceA 上的所有 ModuleA 方法。(其他方法也可以在 InstanceA 上定义)
如果我同时导入 ModuleA 和 ModuleB 并实例化 ClassA,我知道我可以使用“InstanceA.MethodA(...)”和“InstanceA.MethodB(...)”访问 InstanceA 上的所有 ModuleA 方法和 ModuleB 方法。
我考虑了一些解决方案,但不确定是否有首选的方法来实现这一点。这是我考虑过的:
ModuleB 改变 ClassA ModuleB的工厂导入 ModuleA 并改变 ClassA。这些变化能保证持续下去吗?AMD 是否保证跨环境导入相同的模块总是返回相同的对象?
ModuleB 返回改变的 ClassA ModuleB 扩展 ClassA 并返回新的 Object。在这个只有两个模块的例子中,这可能工作得很好,但是如果有多个可选的方法模块呢?
请让我知道您是否遇到过类似的情况以及您的解决方案是什么。