可以继承 Javascript 中的模块吗?
Inherit module in Javascript possible?
我有一个这样的模块:
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 个网页:"Normal page" 普通用户使用 "myModule","Admin page" 管理员使用 "myModule"。
该模块的某些部分由两者(普通用户和管理员用户)使用,但某些部分特定于用户类型。
我想创建 2 个继承自通用模块(具有共享功能)的模块(myNormalModule 和 myAdminModule)。
我觉得 "inherit from a module" 很奇怪。
我的 generalModule 必须是一个对象或者它可以是一个模块?
您创建对象类型,然后从它们继承。您不继承自模块。一个模块可以在自己的实现中使用另一个模块,但这不是继承。
因此,首先创建您要使用的对象结构(如果适用,包括继承),然后将其组织到适当的模块中。而且,在将您的代码组织成模块时,一个模块可以定义一个对象类型,然后可以导出(例如共享)该对象类型,然后其他模块可以使用它或继承它。但是,模块本身只是一个代码组织结构,并不是一个继承结构。
因此,我建议您在担心模块之前弄清楚您的对象层次结构(包括继承),一旦设计好,您就可以将其组织到任何合适的模块中。例如,如果针对这个特定问题的所有对象类型几乎总是一起使用,那么它们可能会一起放在一个模块中。
但是,如果这个问题的某些对象类型可能会被它们自己使用,那么将它们分解成它们自己的模块以便每个只共享适当的部分可能是有意义的。
如果您有想要在模块之间共享的上下文,那么有几种不同的方法可以做到这一点,具体取决于它是什么以及如何使用它。上下文可以属于所有其他对象继承自的基础对象。或者,如果上下文更全局化,它可以存储在一个模块中,然后导出到其他想要访问它的模块。
我有一个这样的模块:
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 个网页:"Normal page" 普通用户使用 "myModule","Admin page" 管理员使用 "myModule"。
该模块的某些部分由两者(普通用户和管理员用户)使用,但某些部分特定于用户类型。
我想创建 2 个继承自通用模块(具有共享功能)的模块(myNormalModule 和 myAdminModule)。
我觉得 "inherit from a module" 很奇怪。
我的 generalModule 必须是一个对象或者它可以是一个模块?
您创建对象类型,然后从它们继承。您不继承自模块。一个模块可以在自己的实现中使用另一个模块,但这不是继承。
因此,首先创建您要使用的对象结构(如果适用,包括继承),然后将其组织到适当的模块中。而且,在将您的代码组织成模块时,一个模块可以定义一个对象类型,然后可以导出(例如共享)该对象类型,然后其他模块可以使用它或继承它。但是,模块本身只是一个代码组织结构,并不是一个继承结构。
因此,我建议您在担心模块之前弄清楚您的对象层次结构(包括继承),一旦设计好,您就可以将其组织到任何合适的模块中。例如,如果针对这个特定问题的所有对象类型几乎总是一起使用,那么它们可能会一起放在一个模块中。
但是,如果这个问题的某些对象类型可能会被它们自己使用,那么将它们分解成它们自己的模块以便每个只共享适当的部分可能是有意义的。
如果您有想要在模块之间共享的上下文,那么有几种不同的方法可以做到这一点,具体取决于它是什么以及如何使用它。上下文可以属于所有其他对象继承自的基础对象。或者,如果上下文更全局化,它可以存储在一个模块中,然后导出到其他想要访问它的模块。