我正在开发一个javascript库,并希望将可选方法组存储在Javascript对象上的不同模块中。
这个库有两个模块,我们称它们为ModuleA和ModuleB。ModuleA导出一个类对象,让它称为ClassA,它只具有最小的核心功能。ModuleB定义了要在ClassA原型上设置的一组可选方法。
在库之外的第三个模块,ModuleC中,我想做以下几点:
我已经考虑过一些解决方案,但我不确定是否有更好的方法来实现这一点。以下是我所考虑的:
ModuleB修改ClassA,ModuleB进口ModuleA的工厂,以及ClassA。这些变化会不会持续下去?AMD是否保证跨环境导入相同的模块总是返回相同的对象?
ModuleB返回修改后的ClassA ModuleB扩展ClassA并返回新对象。在这个只有两个模块的例子中,这可能会很好,但是对于多个可选的方法模块来说呢?
如果您遇到过类似的情况,请告诉我,您的解决方案是什么。
发布于 2012-09-30 04:57:40
以下是我的做法:
// Module A - Define ClassA
define(function() {
function ClassA() {}
ClassA.prototype.methodA = function() {};
return ClassA;
});
// Module B - Extend
define(function() {
return function(ClassToExtend) {
ClassToExtend.prototype.methodB = function() { };
};
});
// Module C - Sticking
define(function(require) {
// Define ClassA
var ClassA = require("module_a");
// Extend ClassA with custom methods of ModuleB
require("module_b")(ClassA);
// Instanciate extended ClassA
var InstanceA = new ClassA();
}https://stackoverflow.com/questions/12537200
复制相似问题