我有一个这样的模块:
var myModule= {};
(function( exports ){
init();
exports.doSomething= function(){
return "test";
};
function init(){
initSubscribers();
initListeners();
initForAdmins();//just for the admin
}
//... a lot of functions that maybe doing things depends on if user is admin or normal user
})( myModule );
我有 2 个网页:“普通页面”使用“myModule”作为普通用户,“管理页面”使用“myModule”作为管理员。
模块的某些部分可供普通用户和管理员用户使用,但某些部分特定于用户类型。
我想创建 2 个从通用模块(具有共享功能)继承的模块(myNormalModule 和 myAdminModule)。
“从模块继承”对我来说看起来很奇怪。
我的generalModule必须是一个对象或者它可以是一个模块?
最佳答案
您创建对象类型,然后继承它们。您不是从模块继承的。一个模块可以在其自己的实现中使用另一个模块,但这不是继承。
因此,首先创建您要使用的对象结构(包括继承(如果适用)),然后将其组织到适当的模块中。并且,在将代码组织到模块中时,模块可以定义对象类型,然后可以导出(例如共享)该对象类型,然后其他模块可以使用它或继承它。但是,模块本身只是一个代码组织结构,而不是继承结构。
因此,我建议您在担心模块之前先弄清楚对象层次结构(包括继承),一旦设计完成,您就可以将其组织成任何合适的模块。例如,如果针对这一特定问题的所有对象类型几乎总是一起使用,那么它们可能会一起放入一个模块中。
但是,如果此问题的某些对象类型可能由它们自己使用,那么将它们分解为自己的模块以便每个仅共享适当的部分可能是有意义的。
如果您想要在模块之间共享上下文,那么有几种不同的方法可以实现这一点,具体取决于它的具体内容和使用方式。上下文可以属于所有其他对象继承自的基础对象。或者,如果上下文更加全局化,则可以将其存储在一个模块中,然后导出到想要访问它的其他模块。
关于javascript - Javascript 中可以继承模块吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32803755/