工廠模式
可以理解成 給不同材料數量,生產出相對應的產品數量
,類似工廠在生產產品的流程。
1 2 3 4 5 6 7 8 9 10
| function storeMoney(initValue) { var money = initValue || 1000; return function(price) { money = money + price; return money; } }
var CloudMoney = storeMoney(100); console.log(CloudMoney(500));
|
上面這個範例是回傳一個函式,在回傳一個值,那如果是包在一個回傳物件呢?
下面就來介紹閉包強大的私有方法。
私有方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| function storeMoney(initValue) { var money = initValue || 1000; return { increase: function(price) { return money += price; }, decrease: function(price) { return money -= price; }, value: function() { return money; } } }
var CloudMoney = storeMoney(100); console.log(CloudMoney.increase(100)); console.log(CloudMoney.decrease(25)); console.log(CloudMoney.value());
var TestMoney = storeMoney(500); console.log(TestMoney.increase(100)); console.log(TestMoney.decrease(25)); console.log(TestMoney.value());
|
透過回傳物件
的型式,可以讓函式增加許多功能,並且各自獨立呼叫閉包函式時,各自互不干擾。
參考資料
六角學院 - JavaScript 核心篇
JavaScript 核心觀念(39)-函式以及 This 的運作-閉包進階:工廠模式及私有方法