JavaScirpt - 模塊的寫法

傳送門

http://www.ruanyifeng.com/blog/2012/10/javascript_module.htmljavascript

1. 原始寫法

function f1() {
       // do sth..
}


function f2() {
    // do sth..
}

缺點:污染全局變量;可能和其餘模塊發生衝突;模塊中的成員之間看不出關係。html

2. 把模塊寫進去進對象裏面

var module1 = new Object({
    _count : 0,

    f1 : function() {
        //..   
    },

    f2 : function() {
        //...

    }       
});

缺點:改變了模塊內部狀態;例如module1._count = 5。不符合「開閉原則」。java

3. 改進第2: 用當即執行函數(當即執行沙盒)來寫

沙盒便是隔離的環境。在JS就是(function(){})。
當即執行函數(IIFE, Immediately-Invoked Function Expression)就是沙盒()。函數

var module1 = (function() {
    var _count = 0;
    var f1 = function() {
        //..
    };

    var f2 = function() {
        //..
    };

    return {
        f1 : f1,
        f2 : f2
    }; 
})();

4. 放大模式(augmentation), 寬放大模(Losse augmentation),輸入所有變量等看阮老師的文章(傳送門)。

相關文章
相關標籤/搜索