Module模式總結(jié)

基本特征

1.模塊化,可重用
2.封裝了變量和function,和全局的namaspace不接觸,松耦合
3.只暴露可用public的方法,其它私有方法全部隱藏

匿名閉包
(function () {
    // ... 所有的變量和function都在這里聲明,并且作用域也只能在這個匿名閉包里
    // ...但是這里的代碼依然可以訪問外部全局的對象
}());
引用全局變量
(function ($, YAHOO) {
    // 這里,我們的代碼就可以使用全局的jQuery對象了,YAHOO也是一樣
} (jQuery, YAHOO));
基本的module模式
var blogModule = (function () {
    var my = {}, privateName = "pray-lee";

    function privateAddTopic(data) {
        // 這里是內(nèi)部處理代碼
    }

    my.Name = privateName;
    my.AddTopic = function (data) {
        privateAddTopic(data);
    };

    return my;
} ());
module模式的拓展

Module模式的一個限制就是所有的代碼都要寫在一個文件,如果想增加拓展方法和屬性,可以把自己傳進(jìn)去

var blogModule = (function (my) {
    my.AddPhoto = function () {
        //添加內(nèi)部代碼  
    };
    return my;
} (blogModule)); 
松耦合拓展
var blogModule = (function (my) {

    // 添加一些功能   
    
    return my;
} (blogModule || {}));  
緊耦合拓展 (可以進(jìn)行函數(shù)重載,把原先的賦值給一個新變量,進(jìn)而重寫自己)
var blogModule = (function (my) {
    var oldAddPhotoMethod = my.AddPhoto;

    my.AddPhoto = function () {
        // 重載方法,依然可通過oldAddPhotoMethod調(diào)用舊的方法
    };

    return my;
} (blogModule));
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容