モジュールパターンはクラスパターンではありません。JavaScriptでクラスを持っているふりをすることはできません。継承に関しては、本当に継承する必要がある場合は、コンストラクター関数を使用してオブジェクトを作成し、プロトタイプの継承を使用する必要がありますが、実行に時間がかかる場合があります。
サブモジュールの作成は簡単です
MODULE.submodule = (function(){
// another module stuff that can even reference MODULE
return { submodule: 'property' }
})();
さて、古典的な意味でのサブクラス化に関しては、ダグラス・クロックフォードがhttp://www.crockford.com/javascript/inheritance.htmlを行うように、プロトタイプを使用してオブジェクトでそれをシミュレートできます。
モジュールを使用してシミュレーションするには、元のモジュール内にシール/シール解除関数を作成して、サブモジュールで使用してみてください。http://www.pallavlaskar.com/javascript-module-pattern-in-details/
で確認できます。
クローン作成と継承
var MODULE_TWO = (function (old) {
var my = {},
key;
for (key in old) {
if (old.hasOwnProperty(key)) {
my[key] = old[key];
}
}
var super_moduleMethod = old.moduleMethod;
my.moduleMethod = function () {
// override method on the clone, access to super through super_moduleMethod
};
return my;
}(MODULE))
または
クロスファイルプライベートステート
var MODULE = (function (my) {
var _private = my._private = my._private || {},
_seal = my._seal = my._seal || function () {
delete my._private;
delete my._seal;
delete my._unseal;
},
_unseal = my._unseal = my._unseal || function () {
my._private = _private;
my._seal = _seal;
my._unseal = _unseal;
};
// permanent access to _private, _seal, and _unseal
return my;
}(MODULE || {}));