varmodule
=(function();
var my=,
getname
:function()
};return my;
})();
//擴充模組
var
module
=(function(my
); return my;
})(module);
//松耦合擴充每個檔案如下結構
var
module
=(function(my
); return my;
})(module
||{});
//松耦合不能安全的覆寫模組屬性(因為沒有載入循序),
// 緊耦合擴充意味著一組載入順序,但是允許覆寫。
var
module
=(function(my
); my
.getnum
=function();
return my;
})(module);
alert(module.getname());
//轉殖
var
module_two
= (function (old
) , key;
for (key in
old)
}var super_modulemethod =
old.modulemethod;
my.modulemethod
= function () ;
return my;
}(module));
/*跨檔案私有狀態
乙個模組分割成幾個檔案有乙個嚴重缺陷。
每個檔案都有自身的私有狀態,
且無權訪問別的檔案的私有狀態。
這可以修復的。下面是乙個松耦合擴充的例子,
不同擴充檔案之間保持了私有狀態:*/
var
module
= (function (my
) , _seal =
my._seal =
my._seal || function () ,//模組載入後,呼叫以移除對_private的訪問許可權
_unseal =
my._unseal =
my._unseal || function () ;//模組載入前,開啟對_private的訪問,以實現擴充部分對私有內容的操作
//非同步呼叫
// 永久獲得 _private, _seal, and _unseal
return my;
}(module
|| {}));
//子模組
module.sub = (function () ;
// 就是多一級命名空間
return my;
}());
/*大多數高階模式可以互相組合成更多有用的模式。如果要我提出乙個複雜應用的設計模式,
我會組合松耦合、私有狀態和子模組。
這裡我還沒有涉及效能,不過我有個小建議:
但值得權衡。只要全域性正確的引入,執行效能不會有任何損失,
可能還因為區域性變數和更少的引用,加快子模組的載入。
最後,乙個例子動態載入子模組到父模組(動態建立)中。
這裡就不用私有狀態了,其實加上也很簡單。這段**允許整個複雜分成的**核
心及其子模組等平行載入完全。*/
var
util
= (function (parent
, $) ;
my.get
= function (url
, params
, callback
) ; // etc...
return
parent
; }(util
|| {}, jquery));
JS設計模式三 模組模式
模組模式是為單例模式新增私有變數和私有方法,並減少全域性變數的使用 如下就是乙個模組模式的 結構 var singlemode function 建立公有方法 function publicmethod1 function publicmethod2 返回乙個物件包含公有方法和屬性 return 複...
JS設計模式之MODULE(模組)模式
9.2module 模組 模式 通常能夠幫助我們清晰地分離和組織專案中的 單元 js中實現模組的方法 1 物件字面量表示法 2 module模式 3 amd模式 4 commonjs模組 5 ecmascript harmony模組 module模式某種程度上是基於物件的字面量 9.2.1物件字面量...
同步模組模式 非同步模組模式
模組化 將複雜的系統分解成高內聚 低耦合的模組,使系統開發變得可控 可維護 可拓展,提高模組的復用率。模組化開發是分而治之的思想,實現對複雜系統的分解,使系統隨著其功能的增加而變得可控 可拓展 可維護。這就要求我們對模組細化,隨著系統功能的增加模組的數量也隨之增加。模組開發的成本隨之減少,但是模組的...