1)Javascript設計模式:Module模式

最簡單的建立對象方法

function User(name) {
    this.name = name || ''
}

User.prototype.say = function() {
    console.log('Hi, My name is ' + this.name);
}

var u = new User('tom')

缺點:此種方法沒法實現私有成員變量的隱藏

私有模式

var User = (function() {
    var sayCount = 0;
    var _say = function() {
        sayCount ++;
    }
    
    return {
        say: function() {
            _say()
            console.log('')
        }
    }
})();
var User = (function() {
    var sayCount = 0;
    var _say = function() {
        sayCount ++;
    }
    
    return {
        say: function() {
            _say()
            console.log('')
        },

        run: function() {
            // 能夠調用say方法嗎?
            // this.say(); 好像不能夠,這裏的this是context window對象。
            // 這種模式是有缺點的,沒法在這裏調用say方法,只能這樣User.say()

            // 若是私有方法出了bug,因爲沒法從外部打補丁,也沒法對私有方法進行擴展
        }
    }
})();
// Revealing Module
var User = (function() {
    var sayCount = 0;
    var _say = function() {
        sayCount ++;
    }
    
    function publicSay() {
      _say()
      console.log('')
      publicRun()
    }

    function publicRun() {
    
    }
    
    return {
        say: publicSay,
        run: publicRun
    }
})();
相關文章
相關標籤/搜索