模塊模式不是類模式。你不能簡單地假裝你現在有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 || {}));
哦,正如RobG指出的那樣,總是使用var來表示變量,從不忽略它,並且記住它是函數作用域,而不是塊範圍。 – Azder