Module Pattern的特點
- 模組化
- 封裝性、鬆耦合
- 只暴露public方法,隱藏private方法
基本用法
var Calculator = (function() {
var self = {};
var msg = 'Please input current number.'; //私有成員
function divide(a, b) { //內部定義除法
if (b <= 0) console.log(msg);
else return a / b;
}
self.divide = divide;
return self
}());
console.log(Calculator.divide(6,3));
擴展: 開發大型專案時,常常需要將不同功能的代碼拆分,讓多人可以分工開發,此時當基本模組建立後,各功能的負責成員便可基於此模組進行擴展開發各子功能。
Calculator = (function(self) {
self.add = function(a, b) {
return a + b;
}
return self;
}(Calculator));
console.log(Calculator.add(6,3));
子模組:假設計算器中定義了進階計算的子模組進行平方運算,便可以下列程式碼為例:
Calculator.advanced = (function(){//進階計算
var self = {};
self.square = square;
function square(a){//平方運算
return a * a;
}
return self;
}())
console.log(Calculator.advanced.square(3));